2017-07-27 6 views
0

私はPython 3とsqliteモジュールを使ってパラメータ化されたSQLクエリを作成しようとしていました。しかし、2つの変数を使用すると、「IndexError:タプル・インデックスが範囲外です」というエラーが発生します。このエラーの原因は何ですか?Python 3 sqliteのパラメータ化されたSQLクエリ

sql = ("select exists(SELECT * from USERS where PASSWORD = '{0}' AND USERNAME = '{1}')") 
args = (var1,var2) 
cursor = database_connection.execute((sql).format(args)) 

答えて

2

決してこれは、SQLインジェクション攻撃を要求している、あなたのSQLコマンドで生のエントリに記入してください。

組み込みの埋め込み関数を使用します。

sql = "select exists(SELECT * from USERS where PASSWORD = ? AND USERNAME = ?)" 
args = (var1,var2) 
cursor = database_connection.execute(sql, args) 
+0

ニース。あなたは '* args'を使ってエラーを修正しました(ただし、それを忘れていました...)、そしてパラメータ化されたクエリを正しく使用することを主張しました。 –

+0

あなたの提案は "TypeError:関数は最大で2つの引数(3与えられます)"エラーをスローします。また、最初の行にかっこの1つがありません。 –

+0

申し訳ありません、それを修正しました。 – user1735003

関連する問題