Python:获取转义的SQL字符串
当我有一个游标的时候,我知道可以安全地执行一个查询,方法如下:
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。
3 个回答
1
SQLObject会自动处理字符的转义和引号问题,但如果你想使用这个功能,可以这样做:
from sqlobject.converters import sqlrepr
print(sqlrepr('SELECT * FROM foo WHERE foo.bar = "foo \'bar\' \"baz', 'postgres'))
结果:
'SELECT * FROM foo WHERE foo.bar = "foo ''bar'' "baz'
1
你没有告诉我们你使用的是哪个库或者数据库,不过我觉得你的问题在这里已经有答案了:如何在Python DB API/Psycopg2中显式引用字符串值
4
看看游标的mogrify方法——它会在变量绑定后返回字符串,并显示它所做的任何引号处理。
cur.mogrify("SELECT * FROM foo WHERE foo.bar = %s", ("foo 'bar' \"baz",))