Rumah >pangkalan data >tutorial mysql >Mengapa Kemas Kini MySQL Python Saya Tidak Mencerminkan dalam Pangkalan Data?
Menyelesaikan Masalah Kemas Kini Pangkalan Data MySQL dan Python
Apabila cuba mengemas kini data dalam pangkalan data MySQL menggunakan Python, pembangun mungkin menghadapi situasi di mana perubahan dibuat melalui kod Python tidak mencerminkan dalam pangkalan data apabila ditanya secara langsung. Artikel ini menyiasat isu ini dan menyediakan penyelesaian yang berpotensi.
Penerangan Masalah
Seperti yang diterangkan oleh pengguna, program menggunakan MySQLdb untuk mengemas kini baris pangkalan data gagal menyimpan berubah secara berterusan. Kod melaksanakan pertanyaan kemas kini tetapi, setelah memeriksa pangkalan data melalui antara muka baris arahan (CLI), kemas kini tidak dipatuhi.
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()
Penyelesaian
The isu berpunca daripada pengendalian transaksi lalai dalam MySQLdb. Secara lalai, MySQLdb melumpuhkan autocommit, bermakna perubahan yang dibuat pada pangkalan data tidak berterusan sehingga operasi komit dilaksanakan secara eksplisit. Untuk menyelesaikan masalah, kod tersebut harus memasukkan panggilan ke conn.commit() sebelum menutup sambungan:
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") # Commit the changes to the database conn.commit() 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()
Dengan conn.commit(), perubahan dilakukan pada pangkalan data, memastikan pertanyaan berikutnya mencerminkan nilai yang dikemas kini.
Atas ialah kandungan terperinci Mengapa Kemas Kini MySQL Python Saya Tidak Mencerminkan dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!