Rumah >pangkalan data >tutorial mysql >Mengapa Kemas Kini MySQL Python Saya Tidak Mencerminkan dalam Pangkalan Data?

Mengapa Kemas Kini MySQL Python Saya Tidak Mencerminkan dalam Pangkalan Data?

Susan Sarandon
Susan Sarandonasal
2024-12-06 04:32:10192semak imbas

Why Aren't My Python MySQL Updates Reflecting in the Database?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn