psycopg2.ProgrammingError:在" st" \ r \ n附近的语法错误,

时间:2015-12-07 11:47:32

标签: python insert psycopg2

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

我试过下面的代码,但是错误是" psycopg2.ProgrammingError:语法错误在或附近" 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()

请解决此问题,提前致谢.....

2 个答案:

答案 0 :(得分:5)

您有一个或多个参数的回车。并且因为您正在使用参数插值,这会破坏查询字符串。但参数插值的更大问题是此代码易受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注入。

答案 1 :(得分:0)

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

编辑:鉴于错误显示"语法错误在“ st ”\ n \ r \ n附近,"它可能是address变量。