Masalah:
Skrip Python gagal mengemas kini baris dalam Pangkalan data MySQL, walaupun melaksanakan perintah "KEMASKINI" dan mendapatkan semula mesej kejayaan. Walau bagaimanapun, apabila menanya secara manual pangkalan data melalui CLI, baris itu kekal tidak berubah.
Kod Coretan:
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()
Output:
4 Number of rows updated: 1
Pemerhatian:
Penyelesaian:
Isu ini berkemungkinan berkaitan dengan tiada pengendalian transaksi. MySQLdb melumpuhkan autocommit secara lalai, yang bermaksud bahawa sebarang perubahan pada pangkalan data tidak diteruskan sehingga komit dikeluarkan secara eksplisit.
Untuk menyelesaikan masalah, tambah baris berikut sebelum menutup sambungan:
conn.commit()
Ini akan memaksa perubahan untuk dilakukan pada pangkalan data, memastikan baris dikemas kini seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa Skrip Python Saya Tidak Mengemas kini Pangkalan Data MySQL Saya Walaupun Mesej Berjaya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!