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 サイトの他の関連記事を参照してください。