【问题标题】:Python: Insert into a postGreSQL table using python by passing parametersPython:通过传递参数使用 python 插入 postGreSQL 表
【发布时间】:2016-10-05 06:32:10
【问题描述】:

我有两个列表:

columns = ['id','name','address']
data = ['1,'John','LA'','2,'Jessica','TX'']

我的表架构与上面的列相同,当我将值和列名作为参数传递时,我无法使用 psycopg2 连接将数据插入表中。

cursor_r.execute("insert into test %s values %s ",tuple(column_names),tuple(values)))

我得到的错误是

psycopg2.ProgrammingError: syntax error at or near "'id'"

我真的无法弄清楚我做错了什么,并且非常感谢任何形式的帮助。预先感谢您尝试帮助我。 编辑:我试着输入这个查询:

cursor_r.execute("insert into test (%s) values (%s) ", ((x for x in column_names),(str(y).replace("(","").replace(")","") for y in values)))

它现在给我一个错误,它不能适应类型“生成器”

编辑 2:我现在收到“生成器”对象不支持索引的错误。谁来帮帮我

【问题讨论】:

  • data = ['1,'John','LA'','2,'Jessica','TX''] 此列表给出错误使用data = ["1,'John','LA'","2,'Jessica','TX'"]
  • @mahendrakamble 我动态存储了数据。所以 list 显然会用 ' ' 来存储它,对吗?不知道能不能改
  • (x for x in column_names) 这部分创建生成器对象,这就是它给出错误的原因
  • 你是否按照我说的那样更改了那个数据列表..
  • @mahendrakamble 我的意思不是手动输入该列表。老实说,我不知道如何改变它

标签: python sql insert psycopg2


【解决方案1】:

INSERT 需要 () 中的列和值,因此您需要 INSERT INTO test (%s) VALUES (%s)

见:http://www.w3schools.com/sql/sql_insert.asp

【讨论】:

  • 我这样做了,但它给出了另一种错误。所以我想我应该删除它们@furas
  • 对不起。那里从来没有错误。但现在我的错误是psycopg2.ProgrammingError: can't adapt type 'generator'
  • 参数有问题 - 也许您需要元组列表 [('1','John','LA'), ('2,'Jessica','TX')] 但我不确定。
  • 或者你可能不得不使用字符串而不是列表,因为%s 需要一个字符串,而不是元素列表。也许你需要executemany() 来插入很多行(但我不知道如果你有一组列和两组值,它是否会起作用。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
相关资源
最近更新 更多