亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數據庫不會使用MySQL和Python自動更新

數據庫不會使用MySQL和Python自動更新

慕勒3428872 2019-08-13 16:12:08
數據庫不會使用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默認禁用自動提交


查看完整回答
反對 回復 2019-08-13
?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

MySQLdb默認情況下自動關閉,這可能會讓人感到困惑。您的連接存在于其自己的事務中,在提交該事務之前,您將無法看到從其他連接所做的更改。

您可以conn.commit()像其他人指出的那樣在更新語句之后執行,或者conn.autocommit(True)在創建連接對象后立即通過設置完全禁用此功能。


查看完整回答
反對 回復 2019-08-13
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

您需要手動提交更改或打開自動提交。

SELECT返回已修改(但未保留)數據的原因是因為連接仍在同一事務中。


查看完整回答
反對 回復 2019-08-13
  • 3 回答
  • 0 關注
  • 651 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號