Python MySQL - mysql-connector-Treiber
MySQL ist das beliebteste relationale Datenbankverwaltungssystem. Wenn Sie mit MySQL nicht vertraut sind, können Sie unserMySQL-Tutorial lesen.
Dieses Kapitel stellt die Verwendung vonmysql-connectorzum Verbinden mit und Verwenden von MySQL vor,mysql-connectorJaMySQLder offiziell bereitgestellte Treiber.
Wir können denpip-Befehl verwenden, ummysql-connector zu installieren:
python -m pip install mysql-connector
Verwenden Sie den folgenden Code, um zu testen, ob mysql-connector erfolgreich installiert wurde:
demo_mysql_test.py:
Führen Sie den obigen Code aus. Wenn keine Fehler auftreten, war die Installation erfolgreich.
HinweisHinweis:Wenn Ihr MySQL die Version 8.0 ist, hat sich die Authentifizierungsmethode des Passwort-Plugins geändert. Die frühere Version verwendete mysql_native_password, und Version 8.0 verwendet caching_sha2_password, daher müssen einige Änderungen vorgenommen werden:
Ändern Sie zuerst die my.ini-Konfiguration:
[mysqld] default_authentication_plugin=mysql_native_passwordFühren Sie dann die folgenden Befehle unter MySQL aus, um das Passwort zu ändern:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';Weitere Informationen finden Sie unter:Python MySQL 8.0-Verbindungsproblem。
Erstellen einer Datenbankverbindung
Sie können den folgenden Code verwenden, um eine Verbindung zur Datenbank herzustellen:
demo_mysql_test.py:
Erstellen einer Datenbank
Um eine Datenbank zu erstellen, verwenden Sie die Anweisung "CREATE DATABASE". Das Folgende erstellt eine Datenbank namens example_db:
demo_mysql_test.py:
Bevor wir eine Datenbank erstellen, können wir auch die Anweisung "SHOW DATABASES" verwenden, um zu prüfen, ob die Datenbank existiert:
demo_mysql_test.py:
Geben Sie die Liste aller Datenbanken aus:
Alternativ können wir uns direkt mit der Datenbank verbinden. Wenn die Datenbank nicht existiert, wird eine Fehlermeldung ausgegeben:
demo_mysql_test.py:
Erstellen einer Datentabelle
Um eine Datentabelle zu erstellen, verwenden Sie die"CREATE TABLE"Anweisung. Bevor Sie eine Datentabelle erstellen, müssen Sie sicherstellen, dass die Datenbank bereits existiert. Das Folgende erstellt einesitesDatentabelle:
demo_mysql_test.py:

demo_mysql_test.py:
Einrichtung des Primärschlüssels
Wenn wir eine Tabelle erstellen, legen wir im Allgemeinen einen Primärschlüssel (PRIMARY KEY) fest. Wir können die"INT AUTO_INCREMENT PRIMARY KEY"Anweisung verwenden, um einen Primärschlüssel zu erstellen. Der Primärschlüssel beginnt bei 1 und wird schrittweise erhöht.
Wenn unsere Tabelle bereits erstellt wurde, müssen wirALTER TABLEverwenden, um der Tabelle einen Primärschlüssel hinzuzufügen:
demo_mysql_test.py:
Fügen Sie der Tabelle sites einen Primärschlüssel hinzu.
Wenn Sie die Tabelle sites noch nicht erstellt haben, können Sie den folgenden Code direkt verwenden, um sie zu erstellen.
demo_mysql_test.py:
Erstellen Sie einen Primärschlüssel für die Tabelle.
Daten einfügen
Um Daten einzufügen, verwenden Sie die"INSERT INTO"Anweisung:
demo_mysql_test.py:
Fügen Sie einen Datensatz in die Tabelle sites ein.
Führen Sie den Code aus, und das Ausgabeergebnis ist:
1 记录插入成功
Batch-Einfügen
Für das Batch-Einfügen verwenden Sie dieexecutemany()Methode. Der zweite Parameter dieser Methode ist eine Liste von Tupeln, die die Daten enthält, die wir einfügen möchten:
demo_mysql_test.py:
Mehrere Datensätze in die Tabelle sites einfügen.
Führen Sie den Code aus, und das Ausgabeergebnis ist:
4 记录插入成功。
Nachdem der obige Code ausgeführt wurde, können wir uns die Datensätze in der Datentabelle ansehen:

Wenn wir die ID des Datensatzes nach dem Einfügen der Daten abrufen möchten, können wir den folgenden Code verwenden:
demo_mysql_test.py:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
1 条记录已插入, ID: 6
Daten abfragen
Um Daten abzufragen, verwenden Sie dieSELECTAnweisung:
demo_mysql_test.py:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
(1, 'EXAMPLE', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com') (4, 'Taobao', 'https://www.taobao.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (6, 'Zhihu', 'https://www.zhihu.com')
Du kannst auch Daten aus bestimmten Feldern lesen:
demo_mysql_test.py:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
('EXAMPLE', 'https://www.example.com')
('Google', 'https://www.google.com')
('Github', 'https://www.github.com')
('Taobao', 'https://www.taobao.com')
('stackoverflow', 'https://www.stackoverflow.com/')
('Zhihu', 'https://www.zhihu.com')
Wenn wir nur einen Datensatz lesen möchten, können wir diefetchone()-Methode verwenden:
demo_mysql_test.py:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
(1, 'EXAMPLE', 'https://www.example.com')
WHERE-Bedingungsanweisung
Wenn wir Daten mit bestimmten Bedingungen lesen möchten, können wir diewhere-Anweisung verwenden:
demo_mysql_test.py
Lesen Sie Datensätze, bei denen das Feld name EXAMPLE ist:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
(1, 'EXAMPLE', 'https://www.example.com')
Sie können auch Wildcards verwenden%:
demo_mysql_test.py
Führen Sie den Code aus, und das Ausgabeergebnis ist:
(1, 'EXAMPLE', 'https://www.example.com') (2, 'Google', 'https://www.google.com')
Um SQL-Injection-Angriffe bei Datenbankabfragen zu verhindern, können wir einen%sPlatzhalter verwenden, um die Abfragebedingungen zu escapen:
demo_mysql_test.py
Sortierung
Abfrageergebnisse können mit derORDER BY-Anweisung sortiert werden. Die Standard-Sortiermethode ist aufsteigend, mit dem SchlüsselwortASC. Wenn Sie eine absteigende Sortierung festlegen möchten, können Sie das SchlüsselwortDESC setzen。
demo_mysql_test.py
In aufsteigender Reihenfolge nach den Buchstaben des name-Feldes sortieren:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
(3, 'Github', 'https://www.github.com') (2, 'Google', 'https://www.google.com') (1, 'EXAMPLE', 'https://www.example.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (4, 'Taobao', 'https://www.taobao.com') (6, 'Zhihu', 'https://www.zhihu.com')
Beispiel für absteigende Sortierung:
demo_mysql_test.py
In absteigender Reihenfolge nach den Buchstaben des name-Feldes sortieren:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
(6, 'Zhihu', 'https://www.zhihu.com') (4, 'Taobao', 'https://www.taobao.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (1, 'EXAMPLE', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com')
Grenzwert
Wenn wir die Menge der abzufragenden Daten festlegen möchten, können wir die"LIMIT"-Anweisung verwenden, um sie anzugeben
demo_mysql_test.py
Die ersten 3 Datensätze lesen:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
(1, 'EXAMPLE', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com')
Sie können auch die Startposition angeben. Das verwendete Schlüsselwort istOFFSET:
demo_mysql_test.py
Die ersten 3 Datensätze beginnend mit dem zweiten Datensatz lesen:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
(2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com') (4, 'Taobao', 'https://www.taobao.com')
Datensatz löschen
Um Datensätze zu löschen, verwenden Sie die"DELETE FROM"Anweisung:
demo_mysql_test.py
Löschen Sie Datensätze, bei denen name stackoverflow ist:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
1 条记录删除
Hinweis:Verwenden Sie die DELETE-Anweisung mit Vorsicht. Stellen Sie sicher, dass die WHERE-Bedingung in der DELETE-Anweisung angegeben ist, andernfalls werden alle Daten in der Tabelle gelöscht.
Um SQL-Injection-Angriffe in Datenbankabfragen zu verhindern, können wir%sPlatzhalter verwenden, um die Bedingungen der DELETE-Anweisung zu maskieren:
demo_mysql_test.py
Führen Sie den Code aus, und das Ausgabeergebnis ist:
1 条记录删除
Tabellendaten aktualisieren
Um eine Datentabelle zu aktualisieren, verwenden Sie die"UPDATE"Anweisung:
demo_mysql_test.py
Ändern Sie die Felddaten mit dem Namen Zhihu in ZH:
Führen Sie den Code aus, und das Ausgabeergebnis ist:
1 条记录被修改
Hinweis:Stellen Sie sicher, dass die UPDATE-Anweisung eine WHERE-Bedingung angibt, andernfalls werden alle Daten in der Tabelle aktualisiert.
Um SQL-Injection-Angriffe in Datenbankabfragen zu verhindern, können wir den %s-Platzhalter verwenden, um die Bedingungen der UPDATE-Anweisung zu maskieren:
demo_mysql_test.py
Führen Sie den Code aus, und das Ausgabeergebnis ist:
1 条记录被修改
Tabelle löschen
Um eine Tabelle zu löschen, verwenden Sie die"DROP TABLE"Anweisung.IF EXISTSDas Schlüsselwort wird verwendet, um festzustellen, ob die Tabelle existiert, und sie wird nur gelöscht, wenn sie existiert: