數據庫不會使用MySQL和Python自動更新我在更新MySQL數據庫中的某行時遇到了一些麻煩。這是我正在嘗試運行的代碼:import MySQLdbconn=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()我運行這個程序時得到的輸出是:4 更新的行數:1它似乎正在工作,但如果我從MySQL命令行界面(CLI)查詢數據庫,我發現它根本沒有更新。但是,如果從CLI我輸入UPDATE compinfo SET Co_num=4 WHERE ID=100;數據庫按預期更新。我的問題是什么?我正在Windows機器上運行帶有MySQL 5.1.30的Python 2.5.2。
3 回答

慕神8447489
TA貢獻1780條經驗 獲得超1個贊
我不確定,但我猜你正在使用INNODB表,而你還沒有完成提交。我相信MySQLdb會自動啟用事務。
打電話conn.commit()
前打電話close
。
從FAQ: 從1.2.0開始,MySQLdb默認禁用自動提交

繁星淼淼
TA貢獻1775條經驗 獲得超11個贊
MySQLdb默認情況下自動關閉,這可能會讓人感到困惑。您的連接存在于其自己的事務中,在提交該事務之前,您將無法看到從其他連接所做的更改。
您可以conn.commit()
像其他人指出的那樣在更新語句之后執行,或者conn.autocommit(True)
在創建連接對象后立即通過設置完全禁用此功能。
添加回答
舉報
0/150
提交
取消