我正在尝试比较2个表中的数据,以便我可以识别出发生了什么变化并应用必要的update
或insert
。
(对我而言)在数据库中执行此操作最明显的方法是外部连接两个表并以此方式标识新值或修改后的值,但是我想知道是否存在内置的SQLAlchemy功能,例如,只要有2个表就可以识别增量?
这种差异识别功能是在Python中以set
表示法完美实现的。
table1 = {('a', 'b'), ('c', 'd')
table2 = {('a', 'DELTA'), ('c', 'd'), ('e', 'f')}
diff = table2.difference(table1)
# {('a', 'DELTA'), ('e', 'f')}
('a', 'b')
中的行table1
UPDATE
设为('a', 'DELTA')
('e', 'f')
INSERT
设为table1
我在core
文档中看到了compare的概念,但是除了基本定义之外,我找不到任何示例或任何细节。
其他人如何使用SQLAlchemy处理此类情况?
谢谢。
答案 0 :(得分:0)
SQLAlchemy支持on_conflict_do_update(),如下所示可以对您进行排序:
with testing.db.connect() as conn:
result = conn.execute(
insert(users).on_conflict_do_update(),
dict(id=1, name="name1"),
)