L'interface de base de données Python prend en charge de nombreuses bases de données, vous pouvez choisir la base de données qui convient à votre projet :
GadFly
mSQL
MySQL
PostgreSQL
Microsoft SQL Server 2000
Informix
Interbase
Oracle
Sybase
Vous devez télécharger différents Module API DB de bases de données, par exemple, si vous devez accéder à la base de données Oracle et aux données MySQL, vous devez télécharger les modules de base de données Oracle et MySQL.
DB-API est une spécification. Elle définit une série d'objets et de méthodes d'accès à la base de données nécessaires pour fournir des interfaces d'accès cohérentes pour divers systèmes de base de données sous-jacents et divers programmes d'interface de base de données.
La DB-API de Python implémente des interfaces pour la plupart des bases de données. Après l'avoir utilisée pour vous connecter à chaque base de données, vous pouvez utiliser chaque base de données de la même manière.
Processus d'utilisation de Python DB-API :
Présentez le module API.
Obtenez la connexion à la base de données.
Exécuter des instructions SQL et des procédures stockées.
Fermez la connexion à la base de données.
1. Qu'est-ce que MySQLdb ?
MySQLdb est une interface permettant à Python de se connecter à la base de données Mysql. Elle implémente la spécification API de base de données Python V2.0 et est basée sur MySQL. API C.
2. Comment installer MySQLdb ?
Pour utiliser DB-API pour écrire des scripts MySQL, vous devez vous assurer que MySQL a été installé. Copiez le code suivant et exécutez-le :
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb
Si le résultat après exécution est le suivant, cela signifie que vous n'avez pas installé le module MySQLdb :
Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb
Si vous choisissez la version de distribution de fichiers binaires, le processus d'installation peut être complété avec des invites d'installation de base. Si vous installez à partir du code source, vous devez basculer vers le répertoire de niveau supérieur de la distribution MySQLdb et taper la commande suivante :
$ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2.tar $ cd MySQL-python-1.2.2 $ python setup.py build $ python setup.py install
Remarque : Veuillez vous assurer que vous disposez des autorisations root. pour installer le module ci-dessus.
3. Connexion à la base de données
Avant de vous connecter à la base de données, veuillez confirmer ce qui suit :
Vous avez créé la base de données TESTDB.
Dans la base de données TESTDB. vous 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 Python MySQLdb est déjà installé sur votre machine.
Exemple :
L'exemple suivant renvoie à la base de données TESTDB de Mysql :
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","codecloud","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 使用execute方法执行SQL语句 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取一条数据库。 data = cursor.fetchone() print "Database version : %s " % data # 关闭数据库连接 db.close()
Le résultat de l'exécution du script ci-dessus est le suivant :
Database version : 5.0.45
4. Créer une table de base de données
Si la connexion à la base de données existe, nous pouvons utiliser la méthode exécuter() pour créer une table pour la base de données, comme montré ci-dessous pour créer la table EMPLOYEE :
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","codecloud","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 如果数据表已经存在使用 execute() 方法删除表。 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 创建数据表SQL语句 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()
5. Opération d'insertion de base de données
L'exemple suivant utilise l'instruction SQL INSERT pour insérer des enregistrements dans la table EMPLOYEE :
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","codecloud","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: # Rollback in case there is any error db.rollback() # 关闭数据库连接 db.close()
L'exemple ci-dessus Il peut également s'écrire sous la forme suivante :
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","codecloud","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) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Exemple :
Le code suivant utilise des variables pour transmettre des paramètres à l'instruction SQL :
.................................. user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) ..................................
Opération de requête de base de données
Python interroge Mysql à l'aide de la méthode fetchone() pour obtenir une seule donnée et la méthode fetchall() pour obtenir plusieurs données.
fetchone() : Cette méthode obtient le prochain jeu de résultats de la requête. L'ensemble de résultats est un objet
fetchall() : reçoit toutes les lignes de résultats renvoyées
rowcount : Il s'agit d'une propriété en lecture seule et renvoie le nombre de lignes affectées après l'exécution de l'exécution(. ) méthode.
Exemple :
Interroger toutes les données de la table EMPLOYEE dont le champ salaire est supérieur à 1000 :
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","codecloud","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 suivants :
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
7. Opération de mise à jour de la base de données
L'opération de mise à jour est utilisée pour mettre à jour la table de données Data, l'exemple suivant modifie tous les champs SEX de la table TESTDB en 'M' et incrémente le champ AGE de 1 :
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","codecloud","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()
Exécuter la transaction
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.
Les transactions Python DB API 2.0 fournissent deux méthodes de validation ou de restauration.
Exemple :
# 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 qui prennent en charge les transactions, dans la programmation de base de données Python, lorsque le curseur est créé, une transaction de base de données invisible est automatiquement lancée.
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
L'API DB définit certaines erreurs et exceptions pour les opérations de base de données. Le tableau suivant répertorie ces erreurs et exceptions :
Ci-dessus C'est l'intégralité. contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.
Pour plus d'articles liés à la bonne posture de connexion de Python à la base de données mysql, veuillez faire attention au site Web PHP chinois !