Der richtige Weg, Python mit der MySQL-Datenbank zu verbinden

高洛峰
Freigeben: 2017-01-10 13:43:00
Original
1178 Leute haben es durchsucht

Die Python-Datenbankschnittstelle unterstützt viele Datenbanken. Sie können die Datenbank auswählen, die zu Ihrem Projekt passt:

GadFly

mSQL

MySQL

PostgreSQL

Microsoft SQL Server 2000

Informix

Interbase

Oracle

Sybase

Sie müssen verschiedene herunterladen Wenn Sie beispielsweise auf Oracle-Datenbank- und MySQL-Daten zugreifen müssen, müssen Sie die Oracle- und MySQL-Datenbankmodule herunterladen.

DB-API ist eine Spezifikation. Sie definiert eine Reihe notwendiger Objekte und Datenbankzugriffsmethoden, um konsistente Zugriffsschnittstellen für verschiedene zugrunde liegende Datenbanksysteme und verschiedene Datenbankschnittstellenprogramme bereitzustellen.

Die DB-API von Python implementiert Schnittstellen für die meisten Datenbanken. Nachdem Sie sie zum Herstellen einer Verbindung zu jeder Datenbank verwendet haben, können Sie jede Datenbank auf die gleiche Weise bedienen.

Python DB-API-Nutzungsprozess:

Einführung des API-Moduls.

Stellen Sie die Verbindung zur Datenbank her.

SQL-Anweisungen und gespeicherte Prozeduren ausführen.

Schließen Sie die Datenbankverbindung.

1. Was ist MySQLdb?

MySQLdb ist eine Schnittstelle für Python zur Verbindung mit der MySQL-Datenbank. Sie implementiert die Python-Datenbank-API-Spezifikation V2.0 und basiert auf MySQL C-API.

2. Wie installiere ich MySQLdb?

Um die DB-API zum Schreiben von MySQL-Skripten zu verwenden, müssen Sie sicherstellen, dass MySQL installiert wurde. Kopieren Sie den folgenden Code und führen Sie ihn aus:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import MySQLdb
Nach dem Login kopieren

Wenn die Ausgabe nach der Ausführung wie folgt lautet, bedeutet dies, dass Sie das MySQLdb-Modul nicht installiert haben:

Traceback (most recent call last):
 File "test.py", line 3, in <module>
  import MySQLdb
ImportError: No module named MySQLdb
Nach dem Login kopieren

Wenn Sie die Binärdateiverteilungsversion wählen, kann der Installationsvorgang mit grundlegenden Installationsaufforderungen abgeschlossen werden. Wenn Sie aus dem Quellcode installieren, müssen Sie zum Verzeichnis der obersten Ebene der MySQLdb-Distribution wechseln und den folgenden Befehl eingeben:

$ 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
Nach dem Login kopieren

Hinweis: Bitte stellen Sie sicher, dass Sie über Root-Berechtigungen verfügen um das obige Modul zu installieren.

3. Datenbankverbindung

Bevor Sie eine Verbindung zur Datenbank herstellen, bestätigen Sie bitte Folgendes:

Sie haben die Datenbank TESTDB erstellt.

In der TESTDB-Datenbank Sie Die Tabelle MITARBEITER

Die Felder der MITARBEITER-Tabelle sind VORNAME, NACHNAME, ALTER, GESCHLECHT und EINKOMMEN.

Der Benutzername, der für die Verbindung zur Datenbank TESTDB verwendet wird, ist „testuser“ und das Passwort ist „test123“. Sie können es selbst festlegen oder direkt den Root-Benutzernamen und das Passwort verwenden. Für die Benutzerautorisierung der MySQL-Datenbank verwenden Sie bitte den Grant-Befehl.

Das Python MySQLdb-Modul ist bereits auf Ihrem Computer installiert.

Beispiel:

Das folgende Beispiel verweist auf die TESTDB-Datenbank von 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()
Nach dem Login kopieren

Das Ausgabeergebnis der Ausführung des obigen Skripts lautet wie folgt:

Database version : 5.0.45
Nach dem Login kopieren

4. Erstellen Sie eine Datenbanktabelle

Wenn die Datenbankverbindung besteht, können wir die Methode „execute()“ verwenden, um eine Tabelle für die Datenbank zu erstellen Unten gezeigt, um die Tabelle EMPLOYEE zu erstellen:

#!/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()
Nach dem Login kopieren

5. Datenbankeinfügungsvorgang

Das folgende Beispiel verwendet die SQL-Anweisung INSERT, um Datensätze in die Tabelle EMPLOYEE einzufügen:

#!/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()
Nach dem Login kopieren

Das obige Beispiel Es kann auch in der folgenden Form geschrieben werden:

#!/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()
Nach dem Login kopieren

Beispiel :

Der folgende Code verwendet Variablen, um Parameter an die SQL-Anweisung zu übergeben:

..................................
user_id = "test123"
password = "password"
 
con.execute(&#39;insert into Login values("%s", "%s")&#39; % \
       (user_id, password))
..................................
Nach dem Login kopieren

6. Datenbankabfragevorgang

Python fragt MySQL ab die Methode fetchone() zum Abrufen eines einzelnen Datenelements und die Methode fetchall() zum Abrufen mehrerer Datenelemente.

fetchone(): Diese Methode ruft den nächsten Abfrageergebnissatz ab. Die Ergebnismenge ist ein Objekt

fetchall(): empfängt alle zurückgegebenen Ergebniszeilen

rowcount: Dies ist eine schreibgeschützte Eigenschaft und gibt die Anzahl der betroffenen Zeilen nach der Ausführung vonexecute( zurück. ) Methode.

Beispiel:

Fragen Sie alle Daten in der EMPLOYEE-Tabelle ab, deren Gehaltsfeld größer als 1000 ist:

#!/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()
Nach dem Login kopieren

Die Ergebnisse der obigen Skriptausführung lauten wie folgt:

fname=Mac, lname=Mohan, age=20, sex=M, income=2000
Nach dem Login kopieren

7. Datenbankaktualisierungsvorgang

Der Aktualisierungsvorgang wird verwendet Aktualisieren Sie die Datentabelle Data. Das folgende Beispiel ändert alle SEX-Felder in der TESTDB-Tabelle in „M“ und erhöht das AGE-Feld um 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()
Nach dem Login kopieren

Transaktion ausführen

Der Transaktionsmechanismus kann die Datenkonsistenz sicherstellen.

Transaktionen sollten 4 Attribute haben: Atomizität, Konsistenz, Isolation und Haltbarkeit. Diese vier Eigenschaften werden oft als ACID-Eigenschaften bezeichnet.

Atomizität. Eine Transaktion ist eine unteilbare Arbeitseinheit. Alle in der Transaktion enthaltenen Vorgänge werden entweder ausgeführt oder nicht ausgeführt.

Konsistenz. Eine Transaktion muss die Datenbank von einem Konsistenzzustand in einen anderen ändern. Konsistenz und Atomizität hängen eng zusammen.

Isolation. Die Ausführung einer Transaktion kann nicht durch andere Transaktionen beeinträchtigt werden. Das heißt, die innerhalb einer Transaktion verwendeten Vorgänge und Daten sind von anderen gleichzeitigen Transaktionen isoliert und gleichzeitig ausgeführte Transaktionen können sich nicht gegenseitig stören.

Haltbarkeit. Kontinuität, auch Permanenz genannt, bedeutet, dass die Änderungen an den Daten in der Datenbank dauerhaft sein sollten, sobald eine Transaktion festgeschrieben wurde. Nachfolgende Operationen oder Ausfälle sollten keine Auswirkungen darauf haben.

Python DB API 2.0-Transaktionen bieten zwei Methoden zum Festschreiben oder Zurücksetzen.

Beispiel:

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

Bei Datenbanken, die Transaktionen unterstützen, wird bei der Python-Datenbankprogrammierung beim Erstellen des Cursors automatisch eine unsichtbare Datenbanktransaktion gestartet.

Die commit()-Methode führt alle Aktualisierungsvorgänge am Cursor aus und die rollback()-Methode setzt alle Vorgänge am aktuellen Cursor zurück. Jede Methode startet eine neue Transaktion.

Fehlerbehandlung

DB-API definiert einige Fehler und Ausnahmen für Datenbankoperationen. Die folgende Tabelle listet diese Fehler und Ausnahmen auf:

Der richtige Weg, Python mit der MySQL-Datenbank zu verbinden

Oben Das ist alles Ich hoffe, dass der Inhalt dieses Artikels für das Studium aller hilfreich sein wird.

Weitere Artikel zur korrekten Verbindung von Python mit der MySQL-Datenbank finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage