Maison > développement back-end > Tutoriel Python > La bonne façon de connecter Python à la base de données MySQL

La bonne façon de connecter Python à la base de données MySQL

高洛峰
Libérer: 2017-01-10 13:43:00
original
1207 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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()
Copier après la connexion

Le résultat de l'exécution du script ci-dessus est le suivant :

Database version : 5.0.45
Copier après la connexion

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()
Copier après la connexion

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 (&#39;Mac&#39;, &#39;Mohan&#39;, 20, &#39;M&#39;, 2000)"""
try:
  # 执行sql语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
except:
  # Rollback in case there is any error
  db.rollback()
 
# 关闭数据库连接
db.close()
Copier après la connexion

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 (&#39;%s&#39;, &#39;%s&#39;, &#39;%d&#39;, &#39;%c&#39;, &#39;%d&#39; )" % \
    (&#39;Mac&#39;, &#39;Mohan&#39;, 20, &#39;M&#39;, 2000)
try:
  # 执行sql语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
except:
  # 发生错误时回滚
  db.rollback()
 
# 关闭数据库连接
db.close()
Copier après la connexion

Exemple :

Le code suivant utilise des variables pour transmettre des paramètres à l'instruction SQL :

..................................
user_id = "test123"
password = "password"
 
con.execute(&#39;insert into Login values("%s", "%s")&#39; % \
       (user_id, password))
..................................
Copier après la connexion

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 > &#39;%d&#39;" % (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()
Copier après la connexion

Les résultats de l'exécution du script ci-dessus sont les suivants :

fname=Mac, lname=Mohan, age=20, sex=M, income=2000
Copier après la connexion

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 = &#39;%c&#39;" % (&#39;M&#39;)
try:
  # 执行SQL语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
except:
  # 发生错误时回滚
  db.rollback()
 
# 关闭数据库连接
db.close()
Copier après la connexion

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 > &#39;%d&#39;" % (20)
try:
  # 执行SQL语句
  cursor.execute(sql)
  # 向数据库提交
  db.commit()
except:
  # 发生错误时回滚
  db.rollback()
Copier après la connexion

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 :

La bonne façon de connecter Python à la base de données MySQL

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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal