Créer une table MySQL avec Python
Apprenez à créer des tables MySQL en Python avec mysql-connector-python. Couvre CREATE TABLE, les types de données, les contraintes et IF NOT EXISTS.
Créer une table est la première étape pour stocker des données structurées dans MySQL. Ce chapitre montre comment définir et créer une table MySQL depuis Python avec mysql-connector-python, en couvrant les types de données des colonnes, les contraintes courantes, le garde IF NOT EXISTS, comment lister les tables existantes et comment gérer les erreurs proprement.
Prérequis
Avant d'exécuter l'un des exemples ci-dessous, assurez-vous d'avoir :
- Python 3.x installé
- Un serveur MySQL en cours d'exécution
mysql-connector-pythoninstallé :
pip install mysql-connector-python- Une base de données avec laquelle travailler (voir MySQL Create Database si vous devez en créer une)
Connexion à MySQL
Chaque opération commence par une connexion. Passez vos identifiants et le nom de la base de données cible à mysql.connector.connect() :
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()L'objet cursor() est ce que vous utilisez pour envoyer des instructions SQL au serveur.
Créer une table
Utilisez l'instruction SQL CREATE TABLE à l'intérieur de cursor.execute() pour définir une nouvelle table. L'exemple ci-dessous crée une table customers avec quatre colonnes :
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Table created successfully.")
mycursor.close()
mydb.close()Types de colonnes et contraintes utilisés ci-dessus
| Colonne | Type | Remarques |
|---|---|---|
id | INT | AUTO_INCREMENT génère un ID unique pour chaque ligne ; PRIMARY KEY impose l'unicité et accélère les recherches |
name | VARCHAR(255) | Chaîne de longueur variable jusqu'à 255 caractères ; NOT NULL signifie que chaque ligne doit fournir une valeur |
address | VARCHAR(255) | Optionnel — sans NOT NULL, il accepte NULL |
age | INT | Stocke des nombres entiers |
Utiliser IF NOT EXISTS
Exécuter CREATE TABLE sur une table qui existe déjà déclenche une erreur. Ajoutez IF NOT EXISTS pour que l'instruction n'ait aucun effet lorsque la table est déjà présente :
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Done — table created or already exists.")
mycursor.close()
mydb.close()Ce modèle peut être appelé à chaque démarrage de l'application sans provoquer d'erreurs de table dupliquée.
Lister les tables pour vérifier la création
Après avoir créé une table, vous pouvez confirmer son existence en exécutant SHOW TABLES :
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SHOW TABLES")
tables = [row[0] for row in mycursor.fetchall()]
print("Tables in database:", tables)
if "customers" in tables:
print("customers table is ready.")
else:
print("customers table was not found.")
mycursor.close()
mydb.close()Exemple de sortie :
Tables in database: ['customers']
customers table is ready.Gestion des erreurs
Envelopper votre code de création de table dans un bloc try/except vous permet d'intercepter les problèmes — comme une connexion perdue ou une erreur de syntaxe dans votre SQL — sans faire planter le programme :
import mysql.connector
from mysql.connector import Error
try:
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS customers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255),
age INT
)
"""
mycursor.execute(sql)
print("Table created successfully.")
except Error as e:
print(f"Error: {e}")
finally:
if mydb.is_connected():
mycursor.close()
mydb.close()
print("Connection closed.")Le bloc finally garantit que la connexion est toujours fermée, même si une exception se produit.
Types de données de colonnes courants
MySQL prend en charge de nombreux types de données. Voici ceux que vous utiliserez le plus souvent dans les applications Python :
| Type de données | Cas d'utilisation |
|---|---|
INT | Nombres entiers (IDs, compteurs, âges) |
FLOAT, DOUBLE | Nombres décimaux (prix, mesures) |
VARCHAR(n) | Texte de longueur variable jusqu'à n caractères |
TEXT | Longues chaînes sans longueur maximale fixe |
DATE | Dates calendaires (YYYY-MM-DD) |
DATETIME | Date et heure combinées (YYYY-MM-DD HH:MM:SS) |
BOOLEAN | TRUE / FALSE (stocké en tant que TINYINT(1)) |
Un exemple plus complet
Voici une table plus réaliste qui utilise plusieurs types de données et contraintes ensemble :
import mysql.connector
from mysql.connector import Error
try:
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
sql = """
CREATE TABLE IF NOT EXISTS orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT NOT NULL,
product VARCHAR(255) NOT NULL,
quantity INT NOT NULL DEFAULT 1,
price FLOAT NOT NULL,
order_date DATETIME DEFAULT CURRENT_TIMESTAMP
)
"""
mycursor.execute(sql)
print("orders table created (or already exists).")
except Error as e:
print(f"Error: {e}")
finally:
if mydb.is_connected():
mycursor.close()
mydb.close()DEFAULT 1 signifie que quantity est défini à 1 lorsqu'aucune valeur n'est fournie. DEFAULT CURRENT_TIMESTAMP enregistre automatiquement le moment où chaque ligne de commande est insérée.
Conclusion
Pour créer une table MySQL depuis Python :
- Installez
mysql-connector-pythonet connectez-vous à votre base de données. - Écrivez une instruction
CREATE TABLEqui définit le nom, le type de données et les éventuelles contraintes de chaque colonne. - Utilisez
IF NOT EXISTSpour éviter les erreurs lors d'exécutions répétées. - Appelez
SHOW TABLES(ou interrogezinformation_schema.tables) pour confirmer que la table a été créée. - Fermez toujours le curseur et la connexion — idéalement dans un bloc
finally.
Une fois votre table créée, vous pouvez commencer à insérer des lignes (voir MySQL Insert) et les interroger (voir MySQL Select).