gpt4 book ai didi

python - 使用sqlalchemy插入postgres数据库时忽略未使用的列

转载 作者:行者123 更新时间:2023-12-05 03:41:50 28 4
gpt4 key购买 nike

我想从 python 字典中将数据插入到表中。但是我的字典包含的键比表中的列多。所以我在插入时收到错误 sqlalchemy.exc.CompileError: Unconsumed column names: column_name。我只想插入表中存在的列名,而忽略多余的列。

如何使用 sqlalchemy 做到这一点?

我使用的代码是

from sqlalchemy import *
from sqlalchemy.dialects import postgresql

db = create_engine('postgresql+psycopg2://localhost:5432/postgres')
meta = MetaData()
meta.bind = db

data = [{
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6
}]

ins_stmt = postgresql.insert(table_object).values(data)
db.execute(ins_stmt)

我的 table_object 包含列 a、b、c、d、e。

P.S.- 我正在使用 sqlalchemy 1.4

最佳答案

我不知道有什么方法可以让 insert 丢弃多余的项目,所以必须事先过滤掉它们。您可以通过将表的列名称与字典的键进行比较来完成此操作。

column_names = table_object.columns.keys()
fixed = [{k: v for k, v in d.items() if k in (d.keys() & column_names)} for d in data]

ins_stmt = postgresql.insert(table_object).values(fixed)
with engine.connect() as conn:
with conn.begin():
conn.execute(ins_stmt)

关于python - 使用sqlalchemy插入postgres数据库时忽略未使用的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67567810/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com