SQL语句中的字符串转义
我正在尝试执行以下查询:
cursor.execute("SELECT DISTINCT(provider) FROM raw_financials
WHERE vendor_id="%s" OR title='%'", (vendor_id, title))
我的问题是,标题可以是任何内容,比如它可以是 "你好,先生",'是的'他回答
。所以当我这样做的时候,可能会得到一个(不好的)返回值,比如 An Elf\\'s Story
(这会引发一个SQL错误)。
我该如何正确地引用SQL语句和标题呢?
1 个回答
5
别自己去加引号;你的数据库驱动会帮你处理这些事情:
cursor.execute("SELECT DISTINCT(provider) FROM raw_financials
WHERE vendor_id = %s OR title = %s", (vendor_id, title))
补充说明:上面提到的 %s
是占位符,表示参数(vendor_id
和 title
)应该放在哪里。MySQLdb 使用 %s
作为占位符,但有些其他的驱动可能用 ?
。你可能需要根据你的驱动来调整我上面的代码,使用合适的占位符。