2

カーソルがあると、次のようにクエリを安全に実行できることがわかります。

cur.execute("SELECT * FROM foo WHERE foo.bar = %s", (important_variable,))

クエリを実行せずに文字列を安全に取得する方法はありますか?たとえば、important_variableがのような文字列の場合"foo 'bar' \"baz"、適切にエスケープされた文字列が必要です。

"SELECT * FROM foo WHERE foo.bar = "foo \'bar\' \"baz"

(または適切なエスケープが何であれ、私にはわかりません)。

psycopgとsqlobjectを使用しています。

4

3 に答える 3

4

カーソルの mogrify メソッドを見てください。変数バインディングの後に文字列が返され、引用符があれば表示されます。

cur.mogrify("SELECT * FROM foo WHERE foo.bar = %s", ("foo 'bar' \"baz",))
于 2010-06-24T17:22:23.233 に答える
1

使用しているライブラリまたは DB を教えてくれませんでしたが、質問はここで答えられていると思います: 文字列値を明示的に引用する方法 (Python DB API/Psycopg2)

于 2010-06-24T16:14:52.517 に答える