2017-05-05 4 views
1

LinuxとPython 2.7で[Water] Meter Data Managementシステムを実行しています。私はthisのようなSOの投稿を読んでいます。3.xより前のPythonの適切なSQLクエリ

%sを含む安全ではないメソッドを使用する必要がない、適切な安全な構文は何ですか?

rc = test_cur.execute("select m.* from meter m where m.acct_no = '%s' ", acct_no)

私が取得していますエラーに基づいていくつかの方法を試してみました。

答えて

2

%sここでは、プレースホルダーをフォーマットするプレースホルダであるを表していません。この場合、これはMySQLドライバquery parameterization placeholderです。プレースホルダーは、別の引き数で​​に渡されたパラメーターでデータベース・ドライバーに置き換えられます。これは、通常の文字列の書式設定とは異なります。あなたはこのような場合には%s引用符で囲む必要はありません

注 - 引用符は、パラメータの種類に応じて必要とされている場合、ドライバが自動的に判断します:

rc = test_cur.execute("select m.* from meter m where m.acct_no = %s", (acct_no,)) 

はまたタプルで囲まれたacct_noの点に注意してください。

+0

ありがとうございました。 – octopusgrabbus

関連する問題