gpt4 book ai didi

python - 如何在 on_conflict_do_update 期间增加列值?

转载 作者:行者123 更新时间:2023-11-29 14:27:54 25 4
gpt4 key购买 nike

如果它不破坏 product_id 和 date 列中的唯一值(未作为唯一约束添加),我想插入一行,如果是,我只想增加现有行中的列值。

我想我必须使用:on_conflict_do_update()但是我找不到应该为索引/约束和 set_arguments 键入什么。

大佬们能指点一下吗? :)

型号:

class MyModel(db.Model):
__tablename__ = 'my_model'

id = Column(Integer, primary_key=True)
date = Column(Date)
product_id = Column(Integer, ForeignKey('product.id'))
counter = Column(Integer)

提前致谢!

最佳答案

这对我有用,使用 Postgresql:

from sqlalchemy.dialects.postgresql import insert

class my_table(Base):
__tablename__ = 'foo'
id = Column(Integer, primary_key=True)
counter = Column(Integer)

insert_stmt = insert(my_table).\
values(id=42).\
on_conflict_do_update(index_elements=[my_table.id],
set_=dict(counter=my_table.counter+1)).\
returning(my_table.id)

results = session.execute(insert_stmt)

https://docs.sqlalchemy.org/en/13/dialects/postgresql.html?highlight=conflict#sqlalchemy.dialects.postgresql.dml.Insert.on_conflict_do_nothing

关于python - 如何在 on_conflict_do_update 期间增加列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55795687/

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