Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Python-Links zur MySQL-Datenbank

Detaillierte Erläuterung des Python-Links zur MySQL-Datenbank

高洛峰
高洛峰Original
2016-10-19 09:13:481243Durchsuche

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.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn