W3docs

Premiers pas avec MySQL

Apprenez à connecter Python à MySQL avec mysql-connector-python : installation, connexion, création de bases de données et premières requêtes.

Python peut communiquer avec des bases de données MySQL grâce au driver officiel MySQL Connector/Python. Ce chapitre vous montre comment installer le driver, établir une connexion, créer une base de données et exécuter vos premières requêtes — vous offrant ainsi une base solide avant de passer à la création de tables, à l'insertion de lignes et à l'interrogation de données.

Ce dont vous avez besoin

Avant d'écrire le moindre code, deux éléments doivent être en place :

  • Python 3.7 ou version ultérieure installé sur votre machine.
  • Un serveur MySQL en cours d'exécution — soit une installation locale (MySQL Community Server), soit une instance cloud (PlanetScale, Amazon RDS, etc.).

Vous n'avez pas besoin de créer une base de données à l'avance ; vous en créerez une depuis Python dans une section ultérieure.

Installation de MySQL Connector/Python

MySQL Connector/Python est le driver MySQL officiel maintenu par Oracle. Installez-le avec pip :

pip install mysql-connector-python

Vérifiez l'installation :

import mysql.connector
print(mysql.connector.__version__)
# Example output: 8.4.0

Si vous voyez un numéro de version, le driver est prêt à l'emploi.

Pourquoi mysql-connector-python et pas PyMySQL ?

Les deux drivers fonctionnent, mais mysql-connector-python est le driver officiellement pris en charge par Oracle. Il utilise une implémentation en pur Python par défaut, et optionnellement une extension C pour de meilleures performances. PyMySQL est une alternative communautaire populaire avec une API quasiment identique. Les chapitres de cette section utilisent mysql-connector-python.

Connexion à un serveur MySQL

Utilisez mysql.connector.connect() pour ouvrir une connexion. Passez vos identifiants en tant qu'arguments nommés :

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword"
)

if connection.is_connected():
    print("Connected to MySQL Server")

connection.close()

Remplacez yourusername et yourpassword par vos identifiants réels. La valeur de host est "localhost" quand MySQL tourne sur la même machine ; utilisez une adresse IP ou un nom d'hôte pour un serveur distant.

Garder les identifiants hors du code source

Coder en dur des mots de passe dans des scripts représente un risque de sécurité. Stockez-les dans des variables d'environnement et lisez-les à l'exécution :

import mysql.connector
import os

connection = mysql.connector.connect(
    host=os.environ.get("MYSQL_HOST", "localhost"),
    user=os.environ.get("MYSQL_USER"),
    password=os.environ.get("MYSQL_PASSWORD")
)

print("Connected:", connection.is_connected())
connection.close()

Définissez les variables dans votre shell avant d'exécuter le script :

export MYSQL_USER=yourusername
export MYSQL_PASSWORD=yourpassword
python connect.py

Création d'une base de données

Une fois connecté au serveur (sans spécifier de base de données), vous pouvez en créer une avec une instruction CREATE DATABASE. Exécutez-la via un curseur — un objet qui envoie des commandes SQL et récupère les résultats.

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword"
)

cursor = connection.cursor()
cursor.execute("CREATE DATABASE IF NOT EXISTS mydatabase")
print("Database created")

cursor.close()
connection.close()

La clause IF NOT EXISTS évite une erreur si la base de données existe déjà.

Lister les bases de données

Vous pouvez vérifier que la base de données a été créée en listant toutes les bases de données du serveur :

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword"
)

cursor = connection.cursor()
cursor.execute("SHOW DATABASES")

for db in cursor:
    print(db)

cursor.close()
connection.close()

Chaque ligne est retournée sous forme de tuple, vous verrez donc une sortie comme :

('information_schema',)
('mydatabase',)
('mysql',)
('performance_schema',)
('sys',)

Connexion à une base de données spécifique

Une fois la base de données créée, incluez le paramètre database lors de la connexion afin que toutes les requêtes suivantes s'exécutent contre elle :

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword",
    database="mydatabase"
)

print("Database in use:", connection.database)
connection.close()

Utilisation d'un gestionnaire de contexte (pratique recommandée)

Appeler manuellement .close() sur chaque connexion et curseur est source d'erreurs — si une exception survient avant .close(), la connexion est laissée ouverte. Utilisez un bloc try/finally, ou mieux encore, encapsulez le curseur dans une instruction with :

import mysql.connector

connection = mysql.connector.connect(
    host="localhost",
    user="yourusername",
    password="yourpassword",
    database="mydatabase"
)

try:
    with connection.cursor() as cursor:
        cursor.execute("SELECT DATABASE()")
        row = cursor.fetchone()
        print("Current database:", row[0])
finally:
    connection.close()

Le bloc with ferme le curseur automatiquement à la sortie du bloc, même si une exception est levée.

Gestion des erreurs de connexion

Des problèmes réseau ou des identifiants incorrects déclenchent mysql.connector.Error. Gérez toujours cette exception dans le code de production :

import mysql.connector
from mysql.connector import Error

try:
    connection = mysql.connector.connect(
        host="localhost",
        user="yourusername",
        password="yourpassword",
        database="mydatabase"
    )
    print("Connection successful")
except Error as e:
    print(f"Error connecting to MySQL: {e}")
finally:
    if "connection" in dir() and connection.is_connected():
        connection.close()
        print("Connection closed")

Erreurs courantes que vous pouvez rencontrer :

Code d'erreurSignification
1045Accès refusé — nom d'utilisateur ou mot de passe incorrect
2003Impossible de se connecter à l'hôte — serveur non démarré ou hôte/port incorrect
1049Base de données inconnue — le nom de database n'existe pas

Référence rapide : paramètres de connexion

ParamètreTypeDescription
hoststrNom d'hôte ou IP du serveur MySQL (défaut "127.0.0.1")
portintPort MySQL (défaut 3306)
userstrNom d'utilisateur MySQL
passwordstrMot de passe MySQL
databasestrBase de données à sélectionner à la connexion
charsetstrJeu de caractères (défaut "utf8mb4")
connect_timeoutintSecondes d'attente pour la connexion (défaut 10)
use_pureboolTrue = pur Python ; False = extension C si disponible

La suite

Une fois la connexion opérationnelle, vous pouvez construire dessus :

Was this page helpful?