ホームページ >バックエンド開発 >Python チュートリアル >SQLite パラメータ置換は 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 サイトの他の関連記事を参照してください。