首頁 >資料庫 >mysql教程 >為什麼我的 Python MySQL 更新沒有反映在資料庫中?

為什麼我的 Python MySQL 更新沒有反映在資料庫中?

Susan Sarandon
Susan Sarandon原創
2024-12-06 04:32:10190瀏覽

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

排查MySQL 和Python 資料庫更新問題

當嘗試使用Python 更新MySQL 資料庫中的資料時,開發人員可能會遇到變更的情況透過Python程式碼直接查詢時不會反映在資料庫中。本文研究了這個問題並提供了一個可能的解決方案。

問題描述

根據使用者描述,使用 MySQLdb 更新資料庫行的程式無法保存持續變更。程式碼執行更新查詢,但透過命令列介面 (CLI) 檢查資料庫時,未觀察到更新。

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()

解決方案

問題源自於 MySQLdb 中的預設交易處理。預設情況下,MySQLdb 會停用自動提交,這表示對資料庫所做的變更不會持久,直到明確執行提交操作。若要解決此問題,程式碼應在關閉連線之前呼叫 conn.commit():

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()

使用 conn.commit(),將變更提交至資料庫,確保後續查詢反映更新後的值。

以上是為什麼我的 Python MySQL 更新沒有反映在資料庫中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn