問題:
Python スクリプトが行の更新に失敗しています「UPDATE」コマンドを実行して成功メッセージを取得したにもかかわらず、MySQL データベース。ただし、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()
出力:
4 Number of rows updated: 1
観察:
解決策:
問題はトランザクションの欠落に関連している可能性があります取り扱い。 MySQLdb はデフォルトで自動コミットを無効にします。つまり、コミットが明示的に発行されるまでデータベースへの変更は保持されません。
問題を解決するには、接続を閉じる前に次の行を追加します。
conn.commit()
これにより、変更がデータベースに強制的にコミットされ、行が意図したとおりに更新されます。
以上が成功メッセージが表示されたにもかかわらず、Python スクリプトが MySQL データベースを更新しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。