次の Python コードがあります:
ここで、var1 は整数、var2 と var3 は文字列です。
var1
var2
var3
Python を使用せずに変数名を (クエリ テキストの一部として) 記述するにはどうすればよいですか?
Python DB-API の実装が異なると、使用できるプレースホルダーも異なるため、どのプレースホルダーを使用しているかを確認する必要があります (おそらく (MySQLdb を使用するなど)):
または (たとえば、Python 標準ライブラリの sqlite3 を使用する):
またはその他 (VALUES の後には (:1, :2, :3) または「名前付きスタイル」 (:fee, : fie, :fo を指定できます) ) または (%(fee)s, %(fie)s, %(fo)s) ここでは、マップの代わりに辞書を implement## の 2 番目の引数として渡します。 #)。使用している DB API モジュールの paramstyle 文字列定数を確認し、http://www.python.org/dev/peps/pep-0249/ ですべてのパラメータを確認してください。配信スタイル!
VALUES
(:1, :2, :3)
(:fee, : fie, :fo を指定できます) )
(%(fee)s, %(fie)s, %(fo)s)
implement## の 2 番目の引数として渡します。 #)。使用している DB API モジュールの
文字列定数を確認し、
リーリー
パラメータはタプル (a, b, c) で渡されることに注意してください。単一の引数を渡す場合、タプルはコンマ (a,) で終わる必要があります。
(a, b, c)
(a,)
データベース API は変数を適切にエスケープし、引用符で囲みます。文字列フォーマット演算子 (%) は使用しないように注意してください。
%
Python DB-API の実装が異なると、使用できるプレースホルダーも異なるため、どのプレースホルダーを使用しているかを確認する必要があります (おそらく (MySQLdb を使用するなど)):
リーリーまたは (たとえば、Python 標準ライブラリの sqlite3 を使用する):
リーリーまたはその他 (
VALUES
の後には(:1, :2, :3)
または「名前付きスタイル」(:fee, : fie, :fo を指定できます) )
または(%(fee)s, %(fie)s, %(fo)s)
ここでは、マップの代わりに辞書をimplement## の 2 番目の引数として渡します。 #)。使用している DB API モジュールの
paramstyle文字列定数を確認し、
http://www.python.org/dev/peps/pep-0249/ ですべてのパラメータを確認してください。配信スタイル!リーリー
パラメータはタプル
(a, b, c)
で渡されることに注意してください。単一の引数を渡す場合、タプルはコンマ(a,)
で終わる必要があります。データベース API は変数を適切にエスケープし、引用符で囲みます。文字列フォーマット演算子 (
%
) は使用しないように注意してください。エスケープや引用は行いません。-
は、- SQL_injection などの制御されていない文字列フォーマット攻撃に対して脆弱です。