【问题标题】:Psycopg2 single quote exceptionPsycopg2 单引号异常
【发布时间】:2014-01-15 03:12:52
【问题描述】:

我将 psycopg2 用于我的应用程序。一切都很好,但是:当我插入包含单引号 ' 的数据时,python 会抛出以下异常:

<class 'psycopg2.ProgrammingError'>: syntax error at or near "s"

而且内容是这样的“儿童页面”

我找不到解决此问题的解决方案。我使用 python 字符串文字,如:

"""INSERT INTO table (field_name) VALUES ('%s');"""

我捕获异常并返回查询。我从 posgtre shell 运行这个查询,它工作正常。 psycopg2 有什么问题?

【问题讨论】:

标签: python sql psycopg2


【解决方案1】:

删除%s 周围的引号。参数被引用,如果您传递查询参数,则会自动转义。

"INSERT INTO table (field_name) VALUES (%s)"

【讨论】:

    【解决方案2】:

    只需删除绑定变量占位符 %s 周围的引号即可:

    """INSERT INTO table (field_name) VALUES (%s);"""
    

    psycopg 将为您引用所有绑定的变量值。

    【讨论】:

      【解决方案3】:

      旧线程,但在阅读后我找到了解决此问题的方法。删除单引号通常不起作用,因为字符串可能包含空格。如果是这种情况,您可以通过在现有单引号后面添加另一个单引号来转义引号:string.replace("'", "''"),所以

      儿童页面

      会变成

      儿童页面

      所以它会尝试插入"""INSERT INTO table (field_name) VALUES ('Kid''s page');"""

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-24
        • 1970-01-01
        • 2022-07-08
        • 2011-12-22
        • 1970-01-01
        • 1970-01-01
        • 2021-08-11
        • 2015-04-02
        相关资源
        最近更新 更多