Python MySQL 挿入操作のトラブルシューティング
Python では、MySQL API を使用して MySQL データベースと対話すると、レコードの挿入で障害が発生することがあります。この記事では、一見正しい実装にもかかわらずレコードの挿入に失敗する問題の 1 つについて説明します。
提供されたコードは、データベースへの接続を確立し、「ドキュメント」テーブルにレコードを挿入しようとします。ただし、挿入操作は失敗します。この問題を解決するには、データベース トランザクションの重要性を理解することが重要です。
MySQL では、データベースへの変更はトランザクションを通じて管理されます。トランザクションは、接続が確立されたときに開始され、接続が閉じられたとき、またはコミットまたはロールバック操作が明示的に呼び出されたときに終了します。トランザクション中にデータベースに加えられた変更は、トランザクションがコミットされるまで永続的ではありません。
提供されたコードでは、挿入操作は正常に実行されますが、変更は接続が閉じられるまでデータベースにコミットされません。 (db.close() を使用)。トランザクションをコミットしないと、接続が閉じられると挿入操作は破棄されます。
この問題を解決し、挿入操作が確実に成功するようにするには、データベース接続を閉じる前に db.commit() の呼び出しを含める必要があります。 。このアクションによりトランザクションがコミットされ、挿入されたレコードがデータベース内に永続化されます。
コミット操作を含む変更されたコードは次のとおりです:
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()
db.commit() 呼び出しを含めることにより、挿入操作を含むトランザクション中に行われた変更はデータベースにコミットされ、永続的になります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3