psycopg2.ProgrammingError:“st”或附近的语法错误\r,

Posted

技术标签:

【中文标题】psycopg2.ProgrammingError:“st”或附近的语法错误\\r,【英文标题】:psycopg2.ProgrammingError: syntax error at or near "st"\r,psycopg2.ProgrammingError:“st”或附近的语法错误\r, 【发布时间】:2015-12-07 11:47:32 【问题描述】:

这里我需要在 python 中的 postgresql 表中插入一些值。

我尝试了下面的代码,但出现错误“psycopg2.ProgrammingError: syntax error at or near "st"\r, referer: http://localhost:8080/"

conn = psycopg2.connect(database="Test", user="dev", password="123456", host="192.168.1.104", port="5432")
cursor = conn.cursor()

cursor.execute('''INSERT INTO signup (id, name, email, dob, address, mobile, password) VALUES (1,%s,%s,%s,%s,%s,%s)''' % (name,email,dob,address,mobile,password))
conn.commit()

请解决这个问题,提前谢谢.....

【问题讨论】:

Little Bobby Tables 想和你谈谈。 ,%s,%s)''', % (name, em 【参考方案1】:

您在一个或多个参数中有回车。而且因为您使用的是参数插值,所以这会破坏查询字符串。但是参数插值的更大问题是该代码容易受到 SQL 注入的影响。

首先,阅读以下内容: http://initd.org/psycopg/docs/usage.html#the-problem-with-the-query-parameters 然后这个: http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries 然后,将您的代码重写为:

cursor.execute('''INSERT INTO signup (id, name, email, dob, address, mobile, password) VALUES (1,%s,%s,%s,%s,%s,%s)''',  (name,email,dob,address,mobile,password))

现在您可以根据需要将“\r”传递给数据库,并且您也可以避免 SQL 注入。

【讨论】:

【参考方案2】:

检查所有这些变量的值。其中部分或全部可能包含'\r'

编辑:鉴于错误显示“在“st”或附近出现语法错误\r,这可能是address 变量。

【讨论】:

以上是关于psycopg2.ProgrammingError:“st”或附近的语法错误\r,的主要内容,如果未能解决你的问题,请参考以下文章

psycopg2.ProgrammingError:“st”或附近的语法错误\r,

psycopg2.ProgrammingError:列 cons.consrc 不存在

psycopg2.ProgrammingError:无法在 odoo 14 中调整类型“NewId”

Python支持SQL数据库返回psycopg2.ProgrammingError:在尝试删除表中的数据时,关系不存在错误?

psycopg2转义字符问题

psycopg2 将参数传递给 SQL 编程错误