Fat*_*ana 6 python sql psycopg2
我在我的应用程序中使用 psycopg2。一切都很好,但是:当我插入包含单引号'的数据时,python 会抛出以下异常:
<class 'psycopg2.ProgrammingError'>: syntax error at or near "s"
Run Code Online (Sandbox Code Playgroud)
内容是这样的“儿童页面”
我找不到解决此问题的解决方案。我使用 python 字符串文字,例如:
"""INSERT INTO table (field_name) VALUES ('%s');"""
Run Code Online (Sandbox Code Playgroud)
我捕获异常并返回查询。我从 posgtre shell 运行这个查询,它工作正常。psycopg2 有什么问题吗?
老线程,但读完这篇文章后我找到了解决这个问题的方法。删除单引号通常不起作用,因为字符串可能包含空格。如果是这种情况,您可以通过在字符串中添加另一个单引号(位于现有单引号后面)来转义引号string.replace("'", "''"):
儿童页面
会变成
儿童页面
所以它会尝试插入"""INSERT INTO table (field_name) VALUES ('Kid''s page');"""
删除 周围的引号%s。参数会被引用,如果您传递查询参数,则会自动转义。
"INSERT INTO table (field_name) VALUES (%s)"
Run Code Online (Sandbox Code Playgroud)