我将psycopg2用于我的应用程序。一切都很好但是这样:当我插入数据包括单引号'然后python抛出以下异常:
<class 'psycopg2.ProgrammingError'>: syntax error at or near "s"
内容如下“Kid's page”
我找不到解决此问题的解决方案。我使用python字符串文字,如:
"""INSERT INTO table (field_name) VALUES ('%s');"""
我捕获异常并返回查询。我从posgtre shell运行此查询,它工作正常。 psycopg2有什么问题?
答案 0 :(得分:1)
只需删除绑定变量占位符%s
周围的引号:
"""INSERT INTO table (field_name) VALUES (%s);"""
psycopg将为您引用所有绑定变量值。
答案 1 :(得分:1)
旧线程,但在阅读本文后,我找到了解决此问题的方法。删除单引号通常不起作用,因为字符串可能包含空格。如果是这种情况,您可以通过在字符串中添加另一个单引号来逃避报价,紧接着现有的单引号:string.replace("'", "''")
,所以
孩子的页面
将成为
孩子的页面
因此它会尝试插入"""INSERT INTO table (field_name) VALUES ('Kid''s page');"""
答案 2 :(得分:0)
删除%s
周围的引号。如果传递查询参数,参数将被引用,自动转义。
"INSERT INTO table (field_name) VALUES (%s)"