Psycopg2单引号异常

时间:2013-12-27 14:15:56

标签: python sql psycopg2

我将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有什么问题?

3 个答案:

答案 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)"