2017-02-08 14 views
1

私はPythonでSQLクエリを実行しています。繰り返すパラメータを表す正しい方法は何ですか? 例:私はここにcur繰り返しパラメータを実行

cur.execute("""select * from TableA where field1= '{}' and field2 = '{}'""".format(a,a)) 

「」と「」と同じですがあります。パラメータリストでそれを繰り返す必要がありますか、それを一度与えるだけの方法がありますか?

+0

どのライブラリでこれを使用していますか? MySQLdb? –

+0

はい私はこれにmysqldbを使用しています。 – jmodest

+2

SQLインジェクションの危険性があるため、文字列補間( '.format()')を使用しないでください。代わりに 'cur.execute(" TableAからfield1 = '%s'とfield2 = '%s' "、a)を選択してください。代わりに、あなたのargs 'safe_a = mysql_string(a)'をサニタイズし、 'format()'を使ってください。 –

答えて

1

位置的な引数を参照するために、角括弧の中に数字を入れてください。

safe_a = MySQLdb.escape_string(a) # protect against sql-injection!!! 
cur.execute("select * from TableA where field1 = '{0}' and field2 = '{0}'".format(safe_a)) 
+0

私はこの方法を一般的にも使用しています。私はこれを行うための最も簡単で読みやすい方法だと思います。 –

関連する問題