如果它不破坏 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)
关于python - 如何在 on_conflict_do_update 期间增加列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55795687/