SQLAlchemy中的全表元组是什么?



每次我想在SQLAlchemy中使用PostreSQL的UPSERT插入多行时,我使用以下代码:

from sqlalchemy.dialects.postgresql import insert as psql_insert

data = [
{'column_1': 1, 'column_2': 2},
{'column_1': 3, 'column_2': 4},
# ...and a lot more data...
]
session.execute(
psql_insert(SomeTable).values(data).on_conflict_do_nothing()
)

但有时我想使用set而不是list(出于某些原因)和dicts是不可哈希的,所以基本上我不能。在SQLAlchemy文档中提到了全表元组,但是没有任何例子。

我尝试用包含列值的元组按照我在数据库模型中声明的顺序执行此代码:

data = [
(1, 2),
(3, 4)
]

但不幸的是,这不起作用。

有没有人在他们的代码中使用过那些全表元组,并且可以告诉我它是如何看起来的?

这只是一个想法,但我猜一个完整的表元组需要是相同的长度像你的表有行-如果你的表有5行,你的元组必须有5的长度。

在与表行数长度不同的元组中,SQLAlchemy将不知道要填充哪些行。

如果您已经使用与表行长度相同的元组,那么我的回答将变得无用。

在字典部分:您应该能够像这样访问字典:

data = [
{'column_1': dict_['column1'], 'column_2': dict_['column2'},
]

最新更新