ホームページ >バックエンド開発 >Python チュートリアル >SQLite パラメータ置換は Python でバインド エラーを引き起こしますか?

SQLite パラメータ置換は Python でバインド エラーを引き起こしますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-19 15:23:30730ブラウズ

Is SQLite Parameter Substitution Causing Binding Errors in Python?

SQLite パラメータ置換の問題

Python 2.5 で SQLite3 を利用する場合、リストを反復処理してデータを取得しようとすると、一般的な問題が発生します。データベース。提案された「?」を使用します。 SQL インジェクションの予防策としてパラメータを使用すると、バインドの数に関するエラーが発生することがよくあります。

調査すると、エラーはデータベース テーブルの最初の作成に起因することが明らかになりました。作成ステートメント (

<code class="sql">CREATE TABLE Equipment (id INTEGER PRIMARY KEY, name TEXT, price INTEGER, weight REAL, info TEXT, ammo_cap INTEGER, availability_west TEXT, availability_east TEXT);</code>

など) は、クエリ中にパラメーターが 1 つだけ使用されているにもかかわらず、8 つのバインディングを登録します。

この問題を解決するには、シーケンスを利用するようにコードを変更します。 Cursor.execute() メソッドの 2 番目のパラメーターとして:

<code class="python">self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])</code>

この変更により、シーケンスがメソッドに確実に提供され、バインディングの数に関する混乱が解決されます。

Referencing SQLite3 カーソル オブジェクトのドキュメントでは、このトピックに関する詳細なガイダンスが提供されています。

以上がSQLite パラメータ置換は Python でバインド エラーを引き起こしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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