1. Einleitung:
MySQL ist eine relationale Datenbank. Andere relationale Datenbanken umfassen Oracle, DB2, SQL Server usw. Der Python-Betrieb von MySQL erfordert die Verwendung eines Pymsyql-Moduls. Pip kann installiert werden.
Zweitens die Funktionsweise von MySQL-Schritten
1. Stellen Sie eine Verbindung zur Datenbank her (IP, Portnummer, Benutzername, Kennwort, Datenbankname).
2. Erstellen Sie einen Cursor
3. Führen Sie SQL aus
4. Erhalten Sie Ergebnisse
5. Schließen Sie den Cursor
6. Schließen Sie die Verbindung
1 import pymysql 2 conn = pymysql.connect ( 3 host = '192.168.1.112', 4 user = 'test', 5 passwd = '111111', 6 port = 3306, # port muss int type 7 sein db = 'test' , 8 charset = 'utf8' # charset muss utf8 schreiben, nicht utf-8 9) 10 sqla = 'select * from stu limit 10;' 11 sqlb = 'in stu einfügen (id, name, sex) VALUE (10000, "张 流", "女"); '12 cur = conn.cursor () # Erstellen Sie einen Cursor ohne Angabe des Cursortyps und geben Sie ein zweidimensionales Tupel zurück. 13 cur = conn.cursor (cursor = pymysql.cursors.DictCursor) # Erstellen Sie einen Cursor und geben Sie den Cursortyp an, um ein Wörterbuch zurückzugeben. 14 cur.execute (sqla) # Ausführen von sqla 15 cur.execute (sqlb) # Ausführen von sqlb 16 conn.commit () # Einfüge-, Lösch- und Aktualisierungsanweisungen ausführen müssen festgeschrieben werden 17 res = cur.fetchall () # alle zurückgegebenen Ergebnisse ausführen, fetchall ein zweidimensionales Array zurückgeben 18 res = cur.fetchone () # alle zurückgegebenen Ergebnisse ausführen, fetchone die erste Zeile zurückgeben 19 res = cur. fetchmany (2) # führt alle zurückgegebenen Ergebnisse aus, fetchmany übergibt eine Zahl und gibt zurück, wie viele Daten 20 res = cur.description # die Informationen zu jedem Feld in der Tabelle zurückgibt. Die Beschreibung gibt auch ein zweidimensionales Array 21 print (res) 22 zurück cur.close () # Cursor schließen 23 conn.close () # Verbindung schließen
Cursortyp:
Ohne Angabe des Cursortyps, dh: cur = conn.cursor (), lautet das zurückgegebene Ergebnis: ((5, 'Ben', männlich '), (6,' Lily ', weiblich')), was zweidimensional ist Tupel
Geben Sie den Cursontyp an, dh: cur = conn.cursor (cursor = pymysql.cursors.DictCursor). Das zurückgegebene Ergebnis lautet:
[{'id': 5, 'name': 'Ben', 'sex': '男'}, {'id': 6, 'name': 'Lily', 'sex': '女'}]
Der Unterschied zwischen fetchall () und fetchone ():
fetchall (): Ruft alle Ergebnisse dieser SQL-Ausführung ab und fügt jede Datenzeile in der Datenbanktabelle in ein Tupel oder Wörterbuch ein
fetchone (): Ermittelt ein Ergebnis dieser SQL-Ausführung und gibt nur ein Datenelement zurück
Wenn das Ergebnis der Ausführung der SQL-Anweisung mehrere Daten sind, verwenden Sie fetchall (). Wenn Sie sicher sein können, dass nur ein Ergebnis der SQL-Ausführung vorhanden ist, verwenden Sie fetchone ().
Drittens kapseln Sie die Funktion des Betriebs der MySQL-Datenbank
1 def my_db (sql, port = 3306, charset = 'utf8'): 2 import pymysql 3 host, user, passwd, db = '192.168.1.112', 'test', '111111', 'test' # definiere Variable 4 conn = pymysql.connect (host = host, 5 user = user, 6 passwd = passwd, 7 port = port, 8 db = db, 9 charset = charset) 10 cur = conn.cursor (cursor = pymysql.cursors.DictCursor) # Erstellen Sie einen Cursor und geben Sie den Cursortyp an, um ein Wörterbuch zurückzugeben. 11 cur.execute (sql) # Führen Sie die Anweisung 12 aus, wenn sql.strip (). Split () [0] .upper () == 'SELECT': # Bestimmen Sie, ob die SQL-Anweisung Beginnen Sie mit select 13 res = cur.fetchall () 14 else: 15 conn.commit () 16 res = 'OK' 17 cur.close () # Cursor schließen 18 conn.close () # Verbindung schließen 19 return res
Viertens üben
Übergeben Sie einen Tabellennamen, exportieren Sie alle Daten und schreiben Sie in eine Excel-Datei
1 def export_excel (table_name): 2 import pymysql, xlwt 3 conn = pymysql.connect ( 4 host = '118.24.3.40', 5 user = 'jxz', 6 passwd = '123456', 7 port = 3306, 8 db = 'jxz', 9 charset = 'utf8') 10 sql = 'select * from% s;'% table_name 11 cur = conn.cursor () # Erstellen Sie einen Cursor ohne Angabe des Cursortyps und geben Sie ein zweidimensionales Tupel 12 cur zurück. execute (sql) # Execute sql 13 all_data = cur.fetchall () # Alle Daten in der Tabelle abrufen 14 fileds = [archiviert [0] für in cur.description abgelegt] # Alle Felder der Tabelle in eine Liste aufnehmen 15 book = xlwt.Workbook () # Erstellen Sie ein neues Excel 16 sheet = book.add_sheet ('sheet1') # Blattseite hinzufügen 17 für col, abgelegt in enumerate (fileds): 18 sheet.write (0, col, archiviert) # Schreiben Sie den Tabellenkopf in die erste Zeile der Excel-Datei. 19 row = 1 # Definieren Sie die Anzahl der Zeilen 20 für Daten in all_data: # Kontrollzeile 21 für col, abgelegt in enumerate (data ): # Kontrollspalte 22 sheet.write (Zeile, Spalte, abgelegt) 23 Zeile = Zeile + 1 # Jedes Mal, wenn eine Zeile geschrieben wird, fügt die Zeile 1 24 book.save hinzu ('% s.xls'% table_name)