MySQL Créer une base de données
Apprenez à créer une base de données MySQL en Python avec mysql-connector-python : connexion, création, listage et sélection de bases de données.
Ce chapitre explique comment créer une base de données MySQL depuis Python à l'aide de la bibliothèque mysql-connector-python. Vous apprendrez à vous connecter à un serveur MySQL, à exécuter l'instruction CREATE DATABASE, à lister les bases de données disponibles et à en sélectionner une pour les requêtes suivantes.
Si vous n'avez pas encore installé le connecteur, consultez d'abord MySQL — Premiers pas. Une fois votre base de données créée, l'étape suivante consiste à créer des tables.
Installer le connecteur MySQL
Installez le pilote MySQL officiel pour Python avec pip :
pip install mysql-connector-pythonCe package fonctionne avec Python 3.6 et les versions ultérieures et ne nécessite pas d'extension C séparée.
Se connecter au serveur MySQL
Avant de créer une base de données, vous devez ouvrir une connexion au serveur MySQL. Fournissez l'adresse de l'hôte, un compte utilisateur et le mot de passe de ce compte. Notez que vous ne spécifiez pas de database à ce stade — la base de données n'existe pas encore.
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
print(mydb) # <mysql.connector.connection.MySQLConnection object at 0x...>
mydb.close()Si les informations de connexion sont incorrectes, mysql.connector.connect() lève une exception mysql.connector.errors.InterfaceError. Encapsulez l'appel dans un bloc try/except dans le code de production.
Créer une base de données
Une fois connecté, obtenez un curseur et exécutez l'instruction SQL CREATE DATABASE. Le curseur est l'objet par lequel toutes les commandes SQL sont envoyées.
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE mydatabase")
mycursor.close()
mydb.close()Si mydatabase existe déjà, le serveur génère une erreur. Ajoutez IF NOT EXISTS pour rendre l'instruction idempotente — elle réussit que la base de données soit nouvelle ou déjà présente :
mycursor.execute("CREATE DATABASE IF NOT EXISTS mydatabase")Règles de nommage des bases de données
- Les noms peuvent contenir des lettres, des chiffres et des underscores (
_). - Les noms sont insensibles à la casse sous Windows et sensibles à la casse sur la plupart des systèmes Linux.
- La longueur maximale est de 64 caractères.
- Évitez les mots réservés tels que
database,tableouselectcomme noms de base de données ; si vous devez les utiliser, entourez le nom de backticks dans SQL.
Définir un jeu de caractères
Par défaut, MySQL utilise le jeu de caractères par défaut du serveur (généralement utf8mb4 sur les installations modernes). Vous pouvez spécifier explicitement le jeu de caractères et la collation pour garantir un comportement cohérent entre différents serveurs :
mycursor.execute(
"CREATE DATABASE IF NOT EXISTS mydatabase "
"CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
)utf8mb4 stocke l'intégralité de la plage Unicode (y compris les emoji). utf8mb4_unicode_ci est une collation insensible à la casse et aux accents, adaptée à la plupart des applications web.
Lister les bases de données existantes
Après avoir créé la base de données, vous pouvez vérifier son existence en exécutant SHOW DATABASES, qui retourne une ligne par base de données :
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
mycursor = mydb.cursor()
mycursor.execute("SHOW DATABASES")
for (db_name,) in mycursor:
print(db_name)
mycursor.close()
mydb.close()Chaque ligne renvoyée par SHOW DATABASES est un tuple à un élément, de sorte que le déballage (db_name,) extrait directement la chaîne. Un résultat typique ressemble à ceci :
information_schema
mydatabase
mysql
performance_schema
sysPour vérifier uniquement si votre base de données spécifique existe, vous pouvez filtrer en Python :
mycursor.execute("SHOW DATABASES")
databases = [row[0] for row in mycursor]
if "mydatabase" in databases:
print("Database found.")
else:
print("Database not found.")Sélectionner une base de données
Une fois qu'une base de données existe, transmettez son nom en tant qu'argument database lors de l'ouverture de la connexion — c'est le schéma habituel pour tout le travail ultérieur :
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase" # select the database here
)
mycursor = mydb.cursor()
# All queries now run against mydatabase
mycursor.close()
mydb.close()Vous pouvez également changer la base de données active sur une connexion existante sans la fermer :
mycursor.execute("USE mydatabase")Cela est pratique lorsque vous devez passer d'une base de données à une autre dans le même script, mais passer database= à connect() est plus explicite pour la plupart des cas d'usage.
Gérer les erreurs
Gérez toujours les erreurs potentielles de base de données afin que votre application échoue de manière contrôlée plutôt que de planter avec une exception non gérée :
import mysql.connector
from mysql.connector import Error
mydb = None
try:
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE IF NOT EXISTS mydatabase")
print("Database created (or already exists).")
except Error as e:
print(f"Error: {e}")
finally:
if mydb is not None and mydb.is_connected():
mycursor.close()
mydb.close()Le bloc finally garantit que la connexion est fermée même lorsqu'une exception est levée, évitant ainsi les fuites de connexion.
Exemple complet fonctionnel
L'extrait ci-dessous combine toutes les étapes : créer la base de données, vérifier qu'elle apparaît dans SHOW DATABASES, puis se reconnecter avec la base de données sélectionnée :
import mysql.connector
from mysql.connector import Error
DB_NAME = "mydatabase"
def create_database():
try:
conn = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
cursor = conn.cursor()
# Create the database if it does not exist
cursor.execute(
f"CREATE DATABASE IF NOT EXISTS {DB_NAME} "
"CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
)
print(f"Database '{DB_NAME}' created (or already exists).")
# Confirm it appears in the database list
cursor.execute("SHOW DATABASES")
databases = [row[0] for row in cursor]
if DB_NAME in databases:
print(f"Confirmed: '{DB_NAME}' is listed on the server.")
cursor.close()
conn.close()
# Re-connect with the database selected
conn = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database=DB_NAME
)
print(f"Connected to '{DB_NAME}' successfully.")
conn.close()
except Error as e:
print(f"Error: {e}")
create_database()Résultat attendu lors de l'exécution sur un serveur MySQL vierge :
Database 'mydatabase' created (or already exists).
Confirmed: 'mydatabase' is listed on the server.
Connected to 'mydatabase' successfully.Étapes suivantes
- MySQL Créer une table — définissez des tables dans la base de données que vous venez de créer.
- MySQL Insert — insérez des lignes dans vos tables.
- MySQL Select — interrogez des données avec
SELECT.