【发布时间】:2011-03-07 21:43:05
【问题描述】:
当我有一个游标时,我知道我可以安全地执行如下查询:
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。
【问题讨论】:
-
如果
important_variable是datetime.date(2000,1,1)那么我认为 Claudiu 想要一个返回字符串"SELECT * FROM foo WHERE foo.bar = '2000-1-1'"的函数 -
实际上在这种情况下不涉及转义 - 驱动程序分别发送参数化语句和参数。如果您使用的是 psycopg2,请检查 psycopg2.extensions.QuotedString。
标签: python database postgresql sqlobject