gpt4 book ai didi

python - sqlalchemy 插入或更新的简单方法?

转载 作者:IT老高 更新时间:2023-10-28 21:45:23 28 4
gpt4 key购买 nike

我有一系列新对象。它们看起来都像这样:

Foo(pk_col1=x, pk_col2=y, val='bar')

其中一些是存在的 Foo(即只有 val 与 db 中的行不同)并且应该生成更新查询。其他的应该生成插入。

我能想到几种方法,最好的方法是:

pk_cols = Foo.table.primary_key.keys()
for f1 in foos:
f2 = Foo.get([getattr(f1, c) for c in pk_cols])
if f2 is not None:
f2.val = f1.val # update
# XXX do we need to do session.add(f2)
# (or at least keep f2 alive until after the commit?)
else:
session.add(f1) # insert

session.commit()

有没有更简单的方法?

最佳答案

我想你在寻找 new_obj = session.merge(obj) .如果主键匹配,这会将处于分离状态的对象合并到 session 中,否则将创建一个新对象。所以 session.save(new_obj) 将适用于插入和更新。

关于python - sqlalchemy 插入或更新的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1382469/

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