Python MySQL - pilote mysql-connector
MySQL est le système de gestion de bases de données relationnelles le plus populaire. Si vous n'êtes pas familier avec MySQL, vous pouvez lire notretutoriel MySQL.
Ce chapitre présente l'utilisation demysql-connectorpour se connecter à et utiliser MySQL,mysql-connectorest, pourMySQL,le pilote officiellement fourni.
Nous pouvons utiliser la commandepippour installermysql-connector:
python -m pip install mysql-connector
Utilisez le code suivant pour tester si mysql-connector a été installé avec succès :
demo_mysql_test.py :
Exécutez le code ci-dessus. Si aucune erreur ne se produit, l'installation a réussi.
RemarqueRemarque :Si votre MySQL est en version 8.0, la méthode d'authentification du plugin de mot de passe a changé. La version précédente utilisait mysql_native_password, et la version 8.0 utilise caching_sha2_password, donc certaines modifications doivent être apportées :
Modifiez d'abord la configuration my.ini :
[mysqld] default_authentication_plugin=mysql_native_passwordExécutez ensuite les commandes suivantes sous MySQL pour changer le mot de passe :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';Pour plus de contenu, vous pouvez vous référer à :Problème de connexion Python MySQL 8.0。
Création d'une connexion à la base de données
Vous pouvez utiliser le code suivant pour vous connecter à la base de données :
demo_mysql_test.py :
Création d'une base de données
Pour créer une base de données, utilisez l'instruction "CREATE DATABASE". Ce qui suit crée une base de données nommée example_db :
demo_mysql_test.py :
Avant de créer une base de données, nous pouvons également utiliser l'instruction "SHOW DATABASES" pour vérifier si la base de données existe :
demo_mysql_test.py :
Afficher la liste de toutes les bases de données :
Alternativement, nous pouvons nous connecter directement à la base de données. Si la base de données n'existe pas, un message d'erreur sera affiché :
demo_mysql_test.py :
Création d'une table de données
Pour créer une table de données, utilisez l'instruction"CREATE TABLE". Avant de créer une table de données, vous devez vous assurer que la base de données existe déjà. Ce qui suit crée une table de donnéessites:
demo_mysql_test.py :

demo_mysql_test.py :
Configuration de la clé primaire
Lors de la création d'une table, nous définissons généralement une clé primaire (PRIMARY KEY). Nous pouvons utiliser l'instruction"INT AUTO_INCREMENT PRIMARY KEY"pour créer une clé primaire. La clé primaire commence à 1 et s'incrémente pas à pas.
Si notre table a déjà été créée, nous devons utiliserALTER TABLEpour ajouter une clé primaire à la table :
demo_mysql_test.py :
Ajouter une clé primaire à la table sites.
Si vous n'avez pas encore créé la table sites, vous pouvez directement utiliser le code suivant pour la créer.
demo_mysql_test.py :
Créer une clé primaire pour la table.
Insertion de données
Pour insérer des données, utilisez la"INSERT INTO"instruction :
demo_mysql_test.py :
Insérez un enregistrement dans la table sites.
Exécutez le code, et le résultat de sortie est :
1 记录插入成功
Insertion par lots
Pour l'insertion par lots, utilisez laexecutemany()méthode. Le deuxième paramètre de cette méthode est une liste de tuples, contenant les données que nous voulons insérer :
demo_mysql_test.py :
Insérer plusieurs enregistrements dans la table sites.
Exécutez le code, et le résultat de sortie est :
4 记录插入成功。
Après avoir exécuté le code ci-dessus, nous pouvons examiner les enregistrements dans la table de données :

Si nous voulons obtenir l'ID de l'enregistrement après avoir inséré les données, nous pouvons utiliser le code suivant :
demo_mysql_test.py :
Exécutez le code, et le résultat de sortie est :
1 条记录已插入, ID: 6
Interroger les données
Pour interroger des données, utilisez l'instructionSELECT:
demo_mysql_test.py :
Exécutez le code, et le résultat de sortie est :
(1, 'EXAMPLE', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com') (4, 'Taobao', 'https://www.taobao.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (6, 'Zhihu', 'https://www.zhihu.com')
Vous pouvez également lire des données à partir de champs spécifiés :
demo_mysql_test.py :
Exécutez le code, et le résultat de sortie est :
('EXAMPLE', 'https://www.example.com')
('Google', 'https://www.google.com')
('Github', 'https://www.github.com')
('Taobao', 'https://www.taobao.com')
('stackoverflow', 'https://www.stackoverflow.com/')
('Zhihu', 'https://www.zhihu.com')
Si nous voulons lire un seul enregistrement, nous pouvons utiliser la méthodefetchone():
demo_mysql_test.py :
Exécutez le code, et le résultat de sortie est :
(1, 'EXAMPLE', 'https://www.example.com')
Instruction conditionnelle WHERE
Si nous voulons lire des données avec des conditions spécifiées, nous pouvons utiliser l'instructionwhere:
demo_mysql_test.py
Lire les enregistrements dont le champ name est EXAMPLE :
Exécutez le code, et le résultat de sortie est :
(1, 'EXAMPLE', 'https://www.example.com')
Vous pouvez également utiliser des caractères génériques%:
demo_mysql_test.py
Exécutez le code, et le résultat de sortie est :
(1, 'EXAMPLE', 'https://www.example.com') (2, 'Google', 'https://www.google.com')
Pour éviter les attaques par injection SQL dans les requêtes de base de données, nous pouvons utiliser%splaceholder pour échapper aux conditions de la requête :
demo_mysql_test.py
Tri
Les résultats de la requête peuvent être triés à l'aide de la clauseORDER BY. La méthode de tri par défaut est l'ordre croissant, avec le mot-cléASC. Si vous souhaitez définir l'ordre décroissant, vous pouvez définir le mot-cléDESC。
demo_mysql_test.py
Trier par ordre croissant selon les lettres du champ name :
Exécutez le code, et le résultat de sortie est :
(3, 'Github', 'https://www.github.com') (2, 'Google', 'https://www.google.com') (1, 'EXAMPLE', 'https://www.example.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (4, 'Taobao', 'https://www.taobao.com') (6, 'Zhihu', 'https://www.zhihu.com')
Exemple de tri par ordre décroissant :
demo_mysql_test.py
Trier par ordre décroissant selon les lettres du champ name :
Exécutez le code, et le résultat de sortie est :
(6, 'Zhihu', 'https://www.zhihu.com') (4, 'Taobao', 'https://www.taobao.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (1, 'EXAMPLE', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com')
Limite
Si nous voulons définir la quantité de données à interroger, nous pouvons utiliser la commande"LIMIT"pour spécifier
demo_mysql_test.py
Lire les 3 premiers enregistrements :
Exécutez le code, et le résultat de sortie est :
(1, 'EXAMPLE', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com')
Vous pouvez également spécifier la position de départ. Le mot-clé utilisé estOFFSET:
demo_mysql_test.py
Lire les 3 premiers enregistrements à partir du deuxième enregistrement :
Exécutez le code, et le résultat de sortie est :
(2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com') (4, 'Taobao', 'https://www.taobao.com')
Supprimer l'enregistrement
Pour supprimer des enregistrements, utilisez l'instruction"DELETE FROM":
demo_mysql_test.py
Supprimer les enregistrements où name est stackoverflow :
Exécutez le code, et le résultat de sortie est :
1 条记录删除
Remarque :Utilisez l'instruction DELETE avec prudence. Assurez-vous que la condition WHERE est spécifiée dans l'instruction DELETE, sinon toutes les données de la table seront supprimées.
Pour éviter les attaques par injection SQL dans les requêtes de base de données, nous pouvons utiliser%splaceholder pour échapper les conditions de l'instruction DELETE :
demo_mysql_test.py
Exécutez le code, et le résultat de sortie est :
1 条记录删除
Mettre à jour les données de la table
Pour mettre à jour une table de données, utilisez l'instruction"UPDATE":
demo_mysql_test.py
Remplacez les données du champ nommé Zhihu par ZH :
Exécutez le code, et le résultat de sortie est :
1 条记录被修改
Remarque :Assurez-vous que l'instruction UPDATE spécifie une condition WHERE, sinon toutes les données de la table seront mises à jour.
Pour éviter les attaques par injection SQL dans les requêtes de base de données, nous pouvons utiliser l'espace réservé %s pour échapper aux conditions de l'instruction UPDATE :
demo_mysql_test.py
Exécutez le code, et le résultat de sortie est :
1 条记录被修改
Supprimer la table
Pour supprimer une table, utilisez l'instruction"DROP TABLE".IF EXISTSLe mot-clé est utilisé pour déterminer si la table existe, et elle n'est supprimée que si elle existe :