python 将列表插入postgres表

ie3xauqp  于 2023-01-08  发布在  Python
关注(0)|答案(2)|浏览(133)

我想通过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

但这给了我一个错误:
在字符串格式化期间并非所有参数都被转换

bihw5rsg

bihw5rsg1#

使用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)
ruoxqz4g

ruoxqz4g2#

您使用的db.execute()接口正在执行SQL INSERT命令,可以参考the relevant documentation;你需要一个字符串

INSERT INTO B4_O (position, city, amount, score) 
       VALUES ("gold", "dresden", 1000, 24),
              ("silver", "Cologne", 600, 42),
              ("gold", "Aachen", 3000, 25)

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

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

请注意,一些python库(如SQLAlchemy)支持开箱即用的多行插入。

相关问题