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
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
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
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()
Das Ausgabeergebnis der Ausführung des obigen Skripts lautet wie folgt:
Database version : 5.0.45
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()
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 ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # Rollback in case there is any error db.rollback() # 关闭数据库连接 db.close()
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 ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Beispiel :
Der folgende Code verwendet Variablen, um Parameter an die SQL-Anweisung zu übergeben:
.................................. user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) ..................................
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 > '%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()
Die Ergebnisse der obigen Skriptausführung lauten wie folgt:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
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 = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
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 > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 向数据库提交 db.commit() except: # 发生错误时回滚 db.rollback()
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:
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!