Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung des Python-Links zur MySQL-Datenbank
Nachdem ich einige grundlegende Python-Dinge gelernt hatte, wollte ich schon immer selbst ein Programm schreiben, aber das Schreiben eines Programms ohne Datenbank scheint mir zu einfach zu sein. Wie verbinde ich also Python mit MySQL? Im Folgenden gebe ich Ihnen eine detaillierte Einführung
Ich verwende die von MySQLdb betriebene MYSQL-Datenbank. Nehmen wir zunächst ein einfaches Beispiel:
importMySQLdb try: conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306) cur=conn.cursor() cur.execute('select * from user') cur.close() conn.close() exceptMySQLdb.Error,e: print"Mysql Error %d: %s"%(e.args[0], e.args[1])
Bitte achten Sie darauf, Ihre Datenbank, Ihren Hostnamen, Ihren Benutzernamen und Ihr Passwort zu ändern.
Lassen Sie uns kurz Beispiele für das Einfügen von Daten, das Einfügen von Daten in Stapeln und das Aktualisieren von Daten demonstrieren:
importMySQLdb try: conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306) cur=conn.cursor() cur.execute('create database if not exists python') conn.select_db('python') cur.execute('create table test(id int,info varchar(20))') value=[1,'hi rollen'] cur.execute('insert into test values(%s,%s)',value) values=[] fori inrange(20): values.append((i,'hi rollen'+str(i))) cur.executemany('insert into test values(%s,%s)',values) cur.execute('update test set info="I am rollen" where id=3') conn.commit() cur.close() conn.close() exceptMySQLdb.Error,e: print"Mysql Error %d: %s"%(e.args[0], e.args[1])
Bitte beachten Sie, dass dies der Fall sein muss Conn.commit() wird verwendet, um die Transaktion festzuschreiben, andernfalls können die Daten nicht wirklich eingefügt werden.
Nach dem Ausführen sind die Ergebnisse meiner MySQL-Datenbank nicht mehr wie im Bild dargestellt.
importMySQLdb try: conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306) cur=conn.cursor() conn.select_db('python') count=cur.execute('select * from test') print'there has %s rows record'%count result=cur.fetchone() printresult print'ID: %s info %s'%result results=cur.fetchmany(5) forr inresults: printr print'=='*10 cur.scroll(0,mode='absolute') results=cur.fetchall() forr inresults: printr[1] conn.commit() cur.close() conn.close() exceptMySQLdb.Error,e: print"Mysql Error %d: %s"%(e.args[0], e.args[1])
Nach der Abfrage wird das Chinesisch korrekt angezeigt, in der Datenbank ist es jedoch verstümmelt. Beachten Sie, dass hier ein Parameterzeichensatz hinzugefügt werden muss:
Im Python-Code
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root' , db='python') Fügen Sie ein Attribut hinzu:
Ändern Sie zu:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python', charset=' utf8')
Der Zeichensatz muss mit der Codierung Ihrer Datenbank übereinstimmen. Wenn die Datenbank gb2312 ist, schreiben Sie charset='gb2312'.
Anmerkungen: Python-MySQL-Link-Gemeinsame Funktionen
commit() send
rollback() rollback
Cursor-Methode zum Ausführen von Befehlen :
callproc(self, procname, args): Wird zum Ausführen gespeicherter Prozeduren verwendet. Die empfangenen Parameter sind der Name der gespeicherten Prozedur und die Parameterliste, und der Rückgabewert ist die Anzahl der betroffenen Zeilen ): ausführen Für eine einzelne SQL-Anweisung sind die empfangenen Parameter die SQL-Anweisung selbst und die verwendete Parameterliste, und der Rückgabewert ist die Anzahl der betroffenen Zeilen
executemany(self, query, args): Führt die einzelne SQL-Anweisung aus , aber führen Sie die Parameter in der Parameterliste wiederholt aus. Parameter, der Rückgabewert ist die Anzahl der betroffenen Zeilen
nextset(self): Zum nächsten Ergebnissatz wechseln
Die vom Cursor verwendete Methode, um die Rückgabe zu erhalten value:
fetchall(self): Alle Rückgabeergebniszeilen empfangen.
fetchmany(self, size=None): Größe empfangen und Ergebniszeilen zurückgeben. Wenn der Wert von size größer als die Anzahl der zurückgegebenen Ergebniszeilen ist, Cursor .arraysize-Daten werden zurückgegeben.
fetchone(self): Gibt eine Ergebniszeile zurück.
scroll(self, value, mode='relative'): Bewegen Sie den Zeiger auf eine bestimmte Zeile. , bedeutet dies, dass der Wertebalken aus der aktuellen Zeile verschoben wird. Wenn mode='absolut', bedeutet dies, dass der Wertebalken aus der ersten Zeile des Ergebnissatzes verschoben wird.