Le meilleur didacticiel connexion de base de données MySQL python3 en 2024, dans ce didacticiel, vous pouvez apprendre Installation PyMySQL,Database Connectivity,Créer une table de base de données,Insert de base de données,requêtes de base de données,mises à jour de base de données,effacement,Affaires exécutives,Gestion des erreurs,
Dans cet article, nous présentons python3 utilisation PyMySQL se connecter à la base de données, et simple CRUD.
PyMySQL pour une version du serveur MySQL de connexion de base de données dans Python3.x, python2 en cours d'utilisation mysqldb.
PyMySQL suivre spécification v2.0 API de base de données Python et contient la bibliothèque client MySQL-Python pur.
Avant d'utiliser PyMySQL, nous devons nous assurer PyMySQL installé.
PyMySQL Télécharger: https: //github.com/PyMySQL/PyMySQL.
Si pas déjà installé, nous pouvons utiliser la commande suivante pour installer la dernière version de PyMySQL:
$ pip install PyMySQL
Si votre système ne prend pas en charge la commande pip, vous pouvez utiliser le installé qui suit:
1, en utilisant la commande git pour télécharger le package d'installation (vous pouvez également télécharger manuellement):
$ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ $ python3 setup.py install
2, si vous avez besoin de développer un numéro de version, vous pouvez utiliser la commande curl à installer:
$ # X.X 为 PyMySQL 的版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz $ cd PyMySQL* $ python3 setup.py install $ # 现在你可以删除 PyMySQL* 目录
Note: Assurez - vous que vous disposez des privilèges de root pour installer les modules décrits ci - dessus.
Le processus d'installation peut apparaître "ImportError: Aucun module setuptools nommé" message d'erreur, ce qui signifie que vous ne devez pas installer setuptools, vous pouvez accéder à https://pypi.python.org/pypi/setuptools trouver la méthode de chaque système d'installation.
installation de Linux Exemple:
$ wget https://bootstrap.pypa.io/ez_setup.py $ python3 ez_setup.py
Avant de se connecter à la base de données, assurez-vous que les éléments suivants:
Les exemples suivants de lien de base de données Mysql TESTDB:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取单条数据. data = cursor.fetchone() print ("Database version : %s " % data) # 关闭数据库连接 db.close()
Mise en œuvre du script ci-dessus renvoie les résultats sont les suivants:
Database version : 5.5.20-log
Si la connexion de base de données existe, nous pouvons utiliser la méthode execute () pour créer des tables pour la base de données, créer un EMPLOYÉ tableau ci-après:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用 cursor() 方法创建一个游标对象 cursor cursor = db.cursor() # 使用 execute() 方法执行 SQL,如果表存在则删除 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 使用预处理语句创建表 sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # 关闭数据库连接 db.close()
Les exemples suivants sont effectués à l'aide d'une instruction SQL INSERT pour insérer des enregistrements à la table EMPLOYÉ:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback() # 关闭数据库连接 db.close()
L'exemple ci-dessus peut également être écrite comme suit:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 执行sql语句 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Le code suivant utilise des variables pour passer des paramètres à une instruction SQL:
frfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfr user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) frfrfrfrfrfrfrfrfrfrfrfrfrfrfrfrfr
Python requête Mysql en utilisant la méthode fetchOne () pour obtenir une seule donnée en utilisant fetchall () pour obtenir une pluralité de données.
salaire (salaire) champ de données de table Découvrez EMPLOYÉ est plus grand que tous de 1000:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print ("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income )) except: print ("Error: unable to fecth data") # 关闭数据库连接 db.close()
Les résultats de l'exécution du script ci-dessus sont les suivantes:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
Les données de mise à jour l'opération de mise à jour du tableau de données, les exemples suivants TestDB champ SEX de table toutes les modifications de 'M', champ AGE est incrémenté de 1:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 更新语句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Supprimer les données de suppression des données de la table, l'exemple suivant montre supprimer les données de la AGE table employé est supérieur à 20, toutes les données:
#!/usr/bin/python3 import pymysql # 打开数据库连接 db = pymysql.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close()
mécanisme de transaction pour assurer la cohérence des données.
Les services devraient avoir quatre propriétés: atomicité, cohérence, isolation, durabilité. Ces quatre propriétés sont souvent désignés comme les propriétés ACID.
Python DB API 2.0 transaction fournit deux méthodes valider ou annuler.
# SQL删除记录语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 向数据库提交 db.commit() except: # 发生错误时回滚 db.rollback()
Pour la base de données transactionnelle, la programmation de base de données en Python, lorsque le curseur est établi, commence automatiquement une transaction invisible de base de données.
engager la méthode () pour toutes les mises à jour de la méthode curseur, rollback () pour faire reculer toutes les opérations du curseur. Chaque méthode a commencé une nouvelle entreprise.
DB API définit quelques erreurs et un fonctionnement anormal de la base de données, le tableau ci-dessous répertorie les erreurs et exceptions:
anormal | description |
---|---|
avertissement | Quand il y a un sérieux avertissement pour déclencher, telles que l'insertion de données est tronquée, et ainsi de suite. Il doit être une sous-classe de StandardError. |
erreur | Toutes les autres classes d'erreur autres que les avertissements. Il doit être une sous-classe de StandardError. |
InterfaceError | Se déclenche lorsque le module d'interface de base de données dispose de sa propre erreur (au lieu d'une base de données d'erreur) se produit. Il doit être une sous-classe d'erreur. |
DatabaseError | Trigger et les erreurs liées à la base de données. Il doit être une sous-classe d'erreur. |
DataError | Quand il y a une erreur de traitement de données a eu lieu lors du déclenchement, par exemple: division par zéro erreur, les données hors de portée, et ainsi de suite. Il doit être une sous-classe de DatabaseError. |
OperationalError | Elle se réfère à un contrôle non-utilisateur, mais l'erreur est survenue lors de la base de données. Par exemple: accidentellement débranchée, le nom de la base de données ne se trouve pas, la transaction échoue, l'erreur d'allocation de mémoire, etc. opérations erreur de base de données a eu lieu. Il doit être une sous-classe de DatabaseError. |
IntegrityError | les erreurs liées à l'intégrité, comme un chèque de clé étrangère échoue et similaires. Il doit être DatabaseError sous-classe. |
InternalError | erreur de base de données interne, comme un curseur (curseur) échoue, la synchronisation des transactions de défaillance et ainsi de suite. Il doit être DatabaseError sous-classe. |
ProgrammingError | erreurs de procédure, telles que la table de données (table) introuvable ou existe déjà, instruction SQL erreur de syntaxe, un numéro d'erreur de paramètres, et ainsi de suite. Il doit être une sous-classe de DatabaseError. |
NotSupportedError | Non pris en charge l'erreur, fait référence à l'utilisation de fonctions telles que l'API ou la base de données ne prend pas en charge. Par exemple, en utilisant .rollback sur la fonction objet de connexion (), mais la base de données ne prend pas en charge les transactions ou l'opération a été fermée. Il doit être une sous-classe de DatabaseError. |