我对python很陌生,并致力于使用psycopg2在postgres数据库中插入数据。我正在尝试插入项,但得到了错误消息。
Psycopg2.ProgrammingError:在“杯”或“杯”附近的语法错误第1行:插入存储值(7,10.5,咖啡杯)
在咖啡杯旁边。我假设顺序是错误的,但我认为只要您指定了值,就可以这样输入它。
这是密码。
import psycopg2
def create_table():
conn=psycopg2.connect("dbname='db1' user='postgres' password='postgress123' host='localhost' port='5432'")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)")
conn.commit()
conn.close()
def insert(quantity, price, item):
conn=psycopg2.connect("dbname='db1' user='postgres' password='postgress123' host='localhost' port='5432'")
cur=conn.cursor()
cur.execute("INSERT INTO store VALUES(%s,%s,%s)" % (quantity, price, item))
conn.commit()
conn.close()
create_table()
insert(7, 10.5, 'coffee cup')发布于 2017-06-30 00:04:02
记住始终使用execute命令的第二个参数来传递变量,如声明的这里。
此外,在语法中使用字段的名称:
cur.execute("INSERT INTO store (item, quantity, price) VALUES (%s, %s, %s);", (item, quantity, price))这应该能起作用。
发布于 2017-06-30 06:24:10
在您的例子中,问题是咖啡杯参数值被视为字符串,但是psycopg2接受单引号中的值。基本上,根据我的理解,在为psycopg2创建SQL时,它要求为数据参数提供单引号,如果您为查询的开始和结束提供了双引号,那么您需要为参数提供单引号。
我的观察是,您为psycopg2中的每个数据参数提供了单引号
import psycopg2
def create_table():
conn=psycopg2.connect("dbname='db1' user='postgres' password='postgress123' host='localhost' port='5432'")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)")
conn.commit()
conn.close()
def insert(quantity, price, item):
conn=psycopg2.connect("dbname='db1' user='postgres' password='postgress123' host='localhost' port='5432'")
cur=conn.cursor()
#cur.execute("INSERT INTO store VALUES(%s,%s,%s)" % (quantity, price, item))
cur.execute("INSERT INTO store VALUES('%s','%s','%s')" % (quantity, price, item))
conn.commit()
conn.close()
create_table()
insert(7, 10.5, 'coffee cup')发布于 2022-11-11 00:58:16
我也面临着同样的问题,在对代码进行了一段时间的故障排除后,我发现我忘记在Insert查询中添加逗号(,)。
导致错误的代码:
data['query'] = 'insert into contacts (name, contact_no, alternate_contact_no, email_id, address)' \
'values (%s %s %s %s %s)'正如您在上面的代码中所看到的,我忘了在每个‘'%s’之后添加逗号。
正确的代码:
data['query'] = 'insert into contacts (name, contact_no, alternate_contact_no, email_id, address)' \
'values (%s, %s, %s, %s, %s)'希望能帮上忙!
https://stackoverflow.com/questions/44836551
复制相似问题