Menyelesaikan Masalah Kemas Kini Pangkalan Data dengan MySQL dan Python
Isu anda timbul apabila mengemas kini pangkalan data MySQL menggunakan pustaka MySQLdb Python. Kod berikut sedang dilaksanakan:
import MySQLdb conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname") cursor=conn.cursor() cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100") cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100") results = cursor.fetchall() for row in results: print row[0] print "Number of rows updated: %d" % cursor.rowcount cursor.close() conn.close()
Setelah menjalankan kod ini, ia kelihatan berjaya, menunjukkan bahawa pangkalan data telah dikemas kini. Walau bagaimanapun, pertanyaan seterusnya daripada antara muka baris arahan MySQL mendedahkan bahawa kemas kini tidak digunakan.
Punca
Isunya terletak pada kekurangan operasi komit. MySQLdb mendayakan transaksi secara lalai, dan kemas kini memerlukan komitmen yang jelas untuk menjadikannya kekal. Tanpa komit, perubahan tidak disimpan ke pangkalan data.
Penyelesaian
Untuk menyelesaikannya, sertakan conn.commit() sebelum menutup sambungan, seperti yang dilihat di bawah:
import MySQLdb conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname") cursor=conn.cursor() cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100") cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100") results = cursor.fetchall() for row in results: print row[0] print "Number of rows updated: %d" % cursor.rowcount **conn.commit()** # Commit changes to database cursor.close() conn.close()
Dengan menggabungkan conn.commit(), perubahan yang dibuat pada pangkalan data akan berjaya berterusan.
Atas ialah kandungan terperinci Mengapa Tidak Kemas Kini Pangkalan Data MySQL Saya dengan Python Mencerminkan dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!