我想通过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
但这给了我错误:
不是所有在格式化字符串期间转换的参数
答案 0 :(得分: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 :(得分:1)
您正在使用的接口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])
请注意,某些SQLAlchemy之类的python库支持开箱即用的多行插入。