web-dev-qa-db-ja.com

Python mySQL Update、Working but but not update table

Mysqlデータベースを更新する必要があるpythonスクリプトがあります。

dbb = MySQLdb.connect(Host="localhost", 
       user="user", 
       passwd="pass", 
       db="database") 
try:
   curb = dbb.cursor()
   curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")
   print "Row(s) were updated :" +  str(curb.rowcount)
   curb.close()
except MySQLdb.Error, e:
   print "query failed<br/>"
   print e  

スクリプトは、Row(s) were updated :RadioIDが11の正しい行数で印刷します。RadioIDをテーブルにない別の番号に変更すると、Row(s) were updated :0。ただし、データベースは実際には更新されません。 CurrentStateフィールドはそのままです。 SQLステートメントをコピーしてPHPMyAdminに貼り付けると、正常に機能します。

33
user2144306

使用する

_dbb.commit()
_

curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")

mysqlサーバーに「ロード」したすべての変更をコミットする

83
Lazykiddy

@Lazykiddyが指摘したように、mysqlに変更をロードした後、変更をコミットする必要があります。

MySQL接続の初期化直後に、このアプローチを使用して自動コミット設定を有効にすることもできます。

dbb.autocommit(True)

次に、コード実行中に行った変更を自動的にコミットします。

24
Cyclone

2つの答えは正しいです。ただし、これも実行できます。

dbb = MySQLdb.connect(Host="localhost", 
   user="user", 
   passwd="pass", 
   db="database",
   autocommit=True) 

add autocommit = True

3
Lex Bryan