Python3-MySQL-Datenbankverbindung - PyMySQL-Treiber
Dieser Artikel stellt die Verwendung von Python3PyMySQLzum Herstellen einer Verbindung zur Datenbank und zum Implementieren einfacher CRUD-Operationen vor.
Was ist PyMySQL?
PyMySQL ist eine Bibliothek, die in Python3.x verwendet wird, um eine Verbindung zu einem MySQL-Server herzustellen, während Python2 mysqldb verwendet.
PyMySQL folgt der Spezifikation Python Database API v2.0 und enthält eine reine Python-MySQL-Client-Bibliothek.
PyMySQL-Installation
Bevor wir PyMySQL verwenden, müssen wir sicherstellen, dass PyMySQL installiert ist.
PyMySQL-Downloadadresse:https://github.com/PyMySQL/PyMySQL。
Wenn es noch nicht installiert ist, können wir den folgenden Befehl verwenden, um die neueste Version von PyMySQL zu installieren:
$ pip3 install PyMySQL
Wenn Ihr System den Befehl pip nicht unterstützt, können Sie es mit den folgenden Methoden installieren:
1. Verwenden Sie den Befehl git, um das Installationspaket herunterzuladen und zu installieren (Sie können es auch manuell herunterladen):
$ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ $ python3 setup.py install
2. Wenn Sie eine Versionsnummer angeben müssen, können Sie den curl-Befehl zur Installation verwenden:
$ # X.X 为 PyMySQL 的版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz $ cd PyMySQL* $ python3 setup.py install $ # 现在你可以删除 PyMySQL* 目录
Hinweis:Bitte stellen Sie sicher, dass Sie über Root-Berechtigungen verfügen, um die oben genannten Module zu installieren.
Während der Installation kann die Fehlermeldung "ImportError: No module named setuptools" auftreten, was bedeutet, dass Sie setuptools nicht installiert haben. Sie könnenhttps://pypi.python.org/pypi/setuptools besuchenum die Installationsmethoden für jedes System zu finden.
Beispiel für die Installation auf einem Linux-System:
$ wget https://bootstrap.pypa.io/ez_setup.py $ python3 ez_setup.py
Datenbankverbindung
Bevor Sie eine Verbindung zur Datenbank herstellen, bestätigen Sie bitte Folgendes:
- Sie haben bereits die Datenbank TESTDB erstellt.
- Sie haben bereits die Tabelle EMPLOYEE in der Datenbank TESTDB erstellt.
- Die Felder der Tabelle EMPLOYEE sind FIRST_NAME, LAST_NAME, AGE, SEX und INCOME.
- Der Benutzername, der zum Verbinden mit der TESTDB-Datenbank verwendet wird, ist "testuser", und das Passwort ist "test123". Sie können sie selbst festlegen oder direkt den Root-Benutzernamen und das Passwort verwenden. Für die Benutzerautorisierung in der MySQL-Datenbank verwenden Sie bitte den GRANT-Befehl.
- Auf Ihrem Rechner ist Python bereits installiert.pymysql-Modul.
- Wenn Sie mit SQL-Anweisungen nicht vertraut sind, können Sie unserSQL-Grundlagen-Tutorial besuchen
Beispiel:
Das folgende Beispiel stellt eine Verbindung zur TESTDB-Datenbank von MySQL her:
Beispiel (Python 3.0+)
Die Ausgabe der Ausführung des obigen Skripts ist wie folgt:
Database version : 5.5.20-log
Datenbanktabelle erstellen
Wenn die Datenbankverbindung besteht, können wir die execute()-Methode verwenden, um eine Tabelle für die Datenbank zu erstellen, wie unten gezeigt, um die Tabelle EMPLOYEE zu erstellen:
Beispiel (Python 3.0+)
Datenbank-Einfügeoperation
Das folgende Beispiel verwendet die SQL-INSERT-Anweisung, um Datensätze in die Tabelle EMPLOYEE einzufügen:
Beispiel (Python 3.0+)
Das obige Beispiel kann auch wie folgt geschrieben werden:
Beispiel (Python 3.0+)
Der folgende Code verwendet Variablen, um Parameter an SQL-Anweisungen zu übergeben:
..................................
user_id = "test123"
password = "password"
con.execute('insert into Login values( %s, %s)' % \
(user_id, password))
..................................
Datenbank-Abfrageoperation
Python fragt MySQL mit der fetchone()-Methode ab, um einen einzelnen Datensatz zu erhalten, und verwendet die fetchall()-Methode, um mehrere Datensätze zu erhalten.
- fetchone():Diese Methode ruft die nächste Ergebnismenge der Abfrage ab. Die Ergebnismenge ist ein Objekt
- fetchall(): empfängt alle zurückgegebenen Ergebniszeilen.
- rowcount:Dies ist ein schreibgeschütztes Attribut und gibt die Anzahl der betroffenen Zeilen nach Ausführung der execute()-Methode zurück.
Beispiel:
Alle Daten in der Tabelle EMPLOYEE abfragen, bei denen das Feld Gehalt (Lohn) größer als 1000 ist:
Beispiel (Python 3.0+)
Das Ausführungsergebnis des obigen Skripts ist wie folgt:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
Datenbank-Aktualisierungsoperation
Aktualisierungsoperationen werden verwendet, um Daten in Datentabellen zu aktualisieren. Das folgende Beispiel erhöht das Feld AGE um 1 für Datensätze, bei denen SEX in der Tabelle TESTDB gleich 'M' ist:
Beispiel (Python 3.0+)
Löschoperation
Löschoperationen werden verwendet, um Daten in Datentabellen zu löschen. Das folgende Beispiel demonstriert das Löschen aller Daten in der Tabelle EMPLOYEE, bei denen AGE größer als 20 ist:
Beispiel (Python 3.0+)
Transaktionen ausführen
Der Transaktionsmechanismus kann die Datenkonsistenz gewährleisten.
Eine Transaktion sollte 4 Eigenschaften haben: Atomarität, Konsistenz, Isolation und Dauerhaftigkeit. Diese vier Eigenschaften werden üblicherweise ACID-Eigenschaften genannt.
- Atomarität. Eine Transaktion ist eine unteilbare Arbeitseinheit. Die in einer Transaktion enthaltenen Operationen werden entweder alle ausgeführt oder keine wird ausgeführt.
- Konsistenz. Eine Transaktion muss die Datenbank von einem konsistenten Zustand in einen anderen überführen. Konsistenz und Atomarität sind eng miteinander verbunden.
- Isolation. Die Ausführung einer Transaktion darf nicht durch andere Transaktionen beeinträchtigt werden. Das heißt, die innerhalb einer Transaktion verwendeten Operationen und Daten sind von gleichzeitigen Transaktionen isoliert, und gleichzeitige Transaktionen können sich gegenseitig nicht beeinträchtigen.
- Dauerhaftigkeit. Auch als Permanenz bekannt, bedeutet sie, dass nach dem Festschreiben einer Transaktion ihre Änderungen an den Daten in der Datenbank dauerhaft sein sollten. Nachfolgende Operationen oder Fehler sollten keine Auswirkungen darauf haben.
Die Transaktion der Python DB API 2.0 bietet zwei Methoden: commit oder rollback.
Beispiel
Beispiel (Python 3.0+)
Für Datenbanken, die Transaktionen unterstützen, beginnt in der Python-Datenbankprogrammierung beim Erstellen eines Cursors automatisch eine implizite Datenbanktransaktion.
Die Methode commit() schreibt alle Aktualisierungsoperationen des Cursors fest, und die Methode rollback() macht alle Operationen des aktuellen Cursors rückgängig. Jede Methode startet eine neue Transaktion.
Fehlerbehandlung
Die DB API definiert einige Fehler und Ausnahmen bei Datenbankoperationen. Die folgende Tabelle listet diese Fehler und Ausnahmen auf:
| Ausnahme | Beschreibung |
|---|---|
| Warnung | Wird bei einer schwerwiegenden Warnung ausgelöst, zum Beispiel wenn eingefügte Daten abgeschnitten werden usw. Muss eine Unterklasse von StandardError sein. |
| Fehler | Alle anderen Fehlerklassen außer Warnungen. Muss eine Unterklasse von StandardError sein. |
| InterfaceError | Wird ausgelöst, wenn im Datenbank-Schnittstellenmodul selbst ein Fehler auftritt (und nicht ein Datenbankfehler). Muss eine Unterklasse von Error sein. |
| DatabaseError | Wird ausgelöst, wenn ein datenbankbezogener Fehler auftritt. Muss eine Unterklasse von Error sein. |
| DataError | Wird ausgelöst, wenn ein Datenverarbeitungsfehler auftritt, wie z. B. Division durch Null, Daten außerhalb des gültigen Bereichs usw. Muss eine Unterklasse von DatabaseError sein. |
| OperationalError | Bezieht sich auf Fehler, die nicht vom Benutzer kontrolliert werden, sondern beim Betrieb der Datenbank auftreten. Zum Beispiel: unerwartete Verbindungstrennung, Datenbankname nicht gefunden, Fehler bei der Transaktionsverarbeitung, Speicherzuweisungsfehler und andere Fehler, die beim Betrieb der Datenbank auftreten. Muss eine Unterklasse von DatabaseError sein. |
| IntegrityError | Fehler im Zusammenhang mit Integrität, wie z. B. Fehler bei der Fremdschlüsselprüfung usw. Muss eine Unterklasse von DatabaseError sein. |
| InternalError | Interne Datenbankfehler, wie ein ungültiger Cursor, Fehler bei der Transaktionssynchronisierung usw. Muss eine Unterklasse von DatabaseError sein. |
| ProgrammingError | Programmfehler, wie z. B. eine nicht gefundene oder bereits existierende Datentabelle, Syntaxfehler in SQL-Anweisungen, falsche Anzahl von Parametern usw. Muss eine Unterklasse von DatabaseError sein. |
| NotSupportedError | Nicht unterstützter Fehler, der sich auf die Verwendung von Funktionen oder APIs bezieht, die von der Datenbank nicht unterstützt werden. Zum Beispiel der Aufruf der Funktion .rollback() auf einem Verbindungsobjekt, wenn die Datenbank keine Transaktionen unterstützt oder die Transaktion geschlossen wurde. Muss eine Unterklasse von DatabaseError sein. |
Das Folgende ist die Vererbungsstruktur der Ausnahmen:
Exception
|__Warning
|__Error
|__InterfaceError
|__DatabaseError
|__DataError
|__OperationalError
|__IntegrityError
|__InternalError
|__ProgrammingError
|__NotSupportedError Weitere Erweiterungen