ホームページ  >  記事  >  データベース  >  Python MySQL の挿入が機能しないのはなぜですか?

Python MySQL の挿入が機能しないのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 01:07:02315ブラウズ

Why Are My Python MySQL Inserts Not Working?

Python MySQL 挿入操作のトラブルシューティング

Python では、MySQL API を使用して MySQL データベースと対話すると、レコードの挿入で障害が発生する可能性があります。この記事では、一見正しい実装にもかかわらずレコードの挿入に失敗する問題の 1 つについて説明します。

提供されたコードは、データベースへの接続を確立し、「ドキュメント」テーブルにレコードを挿入しようとします。ただし、挿入操作は失敗します。この問題を解決するには、データベース トランザクションの重要性を理解することが重要です。

MySQL では、データベースへの変更はトランザクションを通じて管理されます。トランザクションは、接続が確立されたときに開始され、接続が閉じられたとき、またはコミットまたはロールバック操作が明示的に呼び出されたときに終了します。トランザクション中にデータベースに加えられた変更は、トランザクションがコミットされるまで永続的ではありません。

提供されたコードでは、挿入操作は正常に実行されますが、変更は接続が閉じられるまでデータベースにコミットされません。 (db.close() を使用)。トランザクションをコミットしないと、接続が閉じられると挿入操作は破棄されます。

この問題を解決し、挿入操作が確実に成功するようにするには、データベース接続を閉じる前に db.commit() の呼び出しを含める必要があります。 。このアクションによりトランザクションがコミットされ、挿入されたレコードがデータベース内に永続化されます。

コミット操作を含む変更されたコードは次のとおりです。

<code class="python">db = MySQLdb.connect("localhost", "root", "padmaramulu", "pdfsearch")
cursor = db.cursor()
# cursor.execute("""CREATE TABLE IF NOT EXISTS documents (docid INT NOT NULL ,PRIMARY KEY(docid),docname CHAR(30)) engine=innodb""")
temp = "hello"; number = 2;
cursor.execute('insert into documents(docid,docname) values("%d","%s")' % (number, temp))
db.commit()
db.close()</code>

db.commit() 呼び出しを含めることにより、トランザクション中に行われた変更 (挿入操作を含む) はデータベースにコミットされ、永続的になります。

以上がPython MySQL の挿入が機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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