ホームページ >データベース >mysql チュートリアル >成功メッセージが表示されたにもかかわらず、Python スクリプトが MySQL データベースを更新しないのはなぜですか?

成功メッセージが表示されたにもかかわらず、Python スクリプトが MySQL データベースを更新しないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-19 09:57:10831ブラウズ

Why Doesn't My Python Script Update My MySQL Database Despite a Success Message?

MySQL と Python: データベース更新の異常

問題:

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

観察:

  • スクリプト「UPDATE」コマンドを実行し、成功を報告します。 update.
  • ただし、CLI 経由でデータベースをクエリすると、行が更新されていないことがわかります。
  • CLI から直接「UPDATE」コマンドを実行すると、期待どおりに行が更新されます。

解決策:

問題はトランザクションの欠落に関連している可能性があります取り扱い。 MySQLdb はデフォルトで自動コミットを無効にします。つまり、コミットが明示的に発行されるまでデータベースへの変更は保持されません。

問題を解決するには、接続を閉じる前に次の行を追加します。

conn.commit()

これにより、変更がデータベースに強制的にコミットされ、行が意図したとおりに更新されます。

以上が成功メッセージが表示されたにもかかわらず、Python スクリプトが MySQL データベースを更新しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。