Maison >développement back-end >Tutoriel Python >Explication détaillée d'exemples d'opérations de données Python sur MySQL

Explication détaillée d'exemples d'opérations de données Python sur MySQL

Y2J
Y2Joriginal
2017-04-27 11:47:591415parcourir

Cet article présente Python3 pour utiliser PyMySQL pour se connecter à la base de données et implémenter des ajouts, suppressions, modifications et requêtes simples. A une très bonne valeur de référence. Jetons un coup d'œil avec l'éditeur ci-dessous

Cet article présente Python3 pour utiliser PyMySQL pour se connecter à la base de données et implémenter des ajouts, suppressions, modifications et requêtes simples.

Qu'est-ce que PyMySQL ?

PyMySQL est une bibliothèque utilisée pour se connecter au serveur MySQL dans Python 3.x, et mysqldb est utilisé dans Python 2.x.

Installation de PyMySQL

Avant d'utiliser PyMySQL, nous devons nous assurer que PyMySQL est installé.

Adresse de téléchargement PyMySQL : https://github.com/PyMySQL/PyMySQL.

S'il n'est pas encore 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 le pip commande, vous pouvez utiliser la méthode d'installation suivante :

1. Utilisez la commande git pour télécharger le package d'installation et l'installer (vous pouvez également le télécharger manuellement) :

$ git clone https://github.com/PyMySQL/PyMySQL
$ cd PyMySQL
$ python3 setup.py install

2. Si vous devez spécifier un numéro de version, vous pouvez utiliser la commande curl pour installer :

$ # X.X 为PyMySQL 的版本号
$ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
$ cd PyMySQL*
$ python3 setup.py install

Remarque : Veuillez vous assurer que vous disposez des privilèges root pour installer les modules ci-dessus.

Connexion à la base de données

Avant de vous connecter à la base de données, veuillez confirmer les points suivants :

  • Vous avez créé la base de données TESTDB

  • Dans la base de données TESTDB vous avez créé la table EMPLOYEE

  • Les champs de la table EMPLOYEE sont FIRST_NAME, LAST_NAME, AGE, SEX et REVENU

  • Le nom d'utilisateur utilisé pour se connecter à la base de données TESTDB est "testuser" et le mot de passe est "test123". Vous pouvez le définir vous-même ou utiliser directement le nom d'utilisateur et le mot de passe root pour l'autorisation de l'utilisateur de la base de données Mysql. , veuillez utiliser la commande Grant

  • Le module PyMySQL a été installé sur votre machine

Exemple :

L'exemple suivant renvoie à la base de données Mysql TESTDB :

#!/usr/bin/python3
__author__ = 'mayi'
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()

Créer une table de base de données

Si la connexion à la base de données existe, nous pouvons utiliser la méthodeexecute() pour créez une table pour la base de données, créez la table EMPLOYEE comme suit :

#!/usr/bin/python3
__author__ = 'mayi'
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()

Opération d'insertion de base de données

L'exemple suivant utilise l'instruction SQL Insert pour insérer des enregistrements dans le table EMPLOYÉ :

#!/usr/bin/python3
__author__ = 'mayi'

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 également Il peut être écrit sous la forme suivante :

#!/usr/bin/python3
__author__ = 'mayi'

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()

Opération de requête de base de données

Python La requête Mysql utilise la méthode fetchone() pour obtenir une seule donnée et utilise la méthode fetchall() pour obtenir plusieurs données.

  • fetchone() : Cette méthode obtient le jeu de résultats de requête suivant. L'ensemble de résultats est un objet

  • fetchall() : reçoit toutes les lignes de résultats renvoyées

  • rowcount : il s'agit d'un attribut en lecture seule et renvoie Nombre de lignes affectées après l'exécution de la méthode execute()

Exemple :

Interrogez toutes les données de la table EMPLOYEE dont le champ salaire est supérieur à 1000 :

#!/usr/bin/python3
__author__ = 'mayi'

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()

Opération de mise à jour de la base de données

L'opération de mise à jour est utilisée pour mettre à jour les données de la table de données. L'exemple suivant modifie tous les champs SEX de la table de données. table TESTDB à 'M' , le champ AGE est incrémenté de 1 :

#!/usr/bin/python3
__author__ = 'mayi'

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()

Opération de suppression

L'opération de suppression permet de supprimer des données dans la table de données . L'exemple suivant montre la suppression de AGE dans la table de données EMPLOYEE Toutes les données supérieures à 20 :

#!/usr/bin/python3
__author__ = 'mayi'

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()

Exécuter les transactions

Le mécanisme de transaction peut garantir la cohérence des données.

Les transactions doivent avoir 4 attributs : l'atomicité, la cohérence, l'isolement et la durabilité. Ces quatre propriétés sont souvent appelées propriétés ACIDE.

  • Atomicité. Une transaction est une unité de travail indivisible. Toutes les opérations incluses dans la transaction sont soit effectuées, soit aucune.

  • Cohérence. Une transaction doit faire passer la base de données d'un état de cohérence à un autre. La cohérence et l'atomicité sont étroitement liées.

  • Isolement. L'exécution d'une transaction ne peut être perturbée par d'autres transactions. Autrement dit, les opérations et les données utilisées dans une transaction sont isolées des autres transactions simultanées et les transactions exécutées simultanément ne peuvent pas interférer les unes avec les autres.

  • Durabilité. La continuité, également connue sous le nom de permanence, signifie qu'une fois qu'une transaction est validée, les modifications apportées aux données de la base de données doivent être permanentes. Les opérations ou pannes ultérieures ne devraient avoir aucun impact sur celui-ci.

Instance

# SQL删除记录语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
 # 执行SQL语句
 cursor.execute(sql)
 # 向数据库提交
 db.commit()
except:
 # 发生错误时回滚
 db.rollback()

Pour les bases de données prenant en charge les transactions, dans la programmation de bases de données Python, lorsque le curseur est créé, il démarre automatiquement Un invisible transaction de base de données.

La méthode commit() effectue toutes les opérations de mise à jour sur le curseur et la méthode rollback() annule toutes les opérations sur le curseur actuel. Chaque méthode démarre une nouvelle transaction.

Gestion des erreurs

异常 描述
Warning 当有严重警告时触发,例如插入数据是被截断等等。必须是StandardError的子类。
Error 警告以外所有其他错误类。必须是StandardError的子类。
InterfaceError 当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。必须是Error的子类。
DatabaseError 和数据库有关的错误发生时触发。必须是Error的子类。
DataError 当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。必须是DatabaseError的子类。
OperationalError 指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。必须是DatabaseError的子类。
IntegrityError 完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。
InternamError 数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。必须是DatabaseError子类。
ProgrammingError 程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、参数数量错误等等。必须是DatabaseError的子类。
NotSupportedError 不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上使用rollback()函数,然而数据库并不支持事务或者事务已关闭。必须是DatabaseError的子类。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn