将列表插入到PostgreSQL表中。

3

我希望通过Python向Postgres表中插入一组值:

这些值存储在一个列表中,例如:

new=
[
    [gold, dresden, 1000, 24],
    [silver, Cologne, 600, 42],
    [gold, Aachen, 3000, 25]
]

这个表已经在Postgres中创建了,包括表头。我该如何进行插入操作?

db.execute("INSERT INTO B4_O (position, city, amount, score) VALUES (%s,%s,%s)", new)
db.commit

但是这个代码会报错:

在字符串格式化过程中并非所有参数都被转换


for item in new: ...db.execute(..., item) 或者尝试 new[0] - jmunsch
2个回答

2

使用psycopg2.extras.execute_values()函数:

new = [
    ['gold', 'dresden', 1000, 24],
    ['silver', 'Cologne', 600, 42],
    ['gold', 'Aachen', 3000, 25]
]

from psycopg2.extras import execute_values

execute_values(db, "INSERT INTO B4_O (position, city, amount, score) VALUES %s", new)

1
你正在使用的接口db.execute()正在执行SQL INSERT命令。你可以参考相关文档;你需要一个形如的字符串。
INSERT INTO B4_O (position, city, amount, score) 
       VALUES ("gold", "dresden", 1000, 24),
              ("silver", "Cologne", 600, 42),
              ("gold", "Aachen", 3000, 25)

一个在Python中获取值的简单方法是:

使用html代码:

','.join(['("{}", "{}", {}, {})'.format(*x) for x in new])

请注意,一些Python库(如SQLAlchemy)支持一次性插入多行数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接