在这里,我需要在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()
请解决这个问题,提前谢谢.....
您有一个或多个参数的回车。并且因为您正在使用参数插值,这会破坏查询字符串。但参数插值的更大问题是此代码易受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注入。
检查所有这些变量的值。他们中的一些或全部可能含有'\r'
。
编辑:假设错误显示“语法错误处于或接近”st“\ r \ n”,则可能是address
变量。