假设我有一个表tags
,该表具有一个字段count
,该字段指示items
使用给定标记标记了多少个。
添加带有现有标签的新项目后,如何在SQLAlchemy中增加此计数器?
使用普通SQL,我将执行以下操作:
INSERT INTO `items` VALUES (...)
UPDATE `tags` SET count=count+1 WHERE tag_id=5
但是我如何count=count+1
用SQLAlchemy 表达?
如果您有类似的东西:
mytable = Table('mytable', db.metadata,
Column('id', db.Integer, primary_key=True),
Column('counter', db.Integer)
)
您可以像这样增加字段:
m = mytable.query.first()
m.counter = mytable.c.counter + 1
或者,如果您有一些映射的模型,则可以选择编写:
m = Model.query.first()
m.counter = Model.counter + 1
这两个版本都将返回您要求的sql语句。但是,如果您不包括该列并仅编写m.counter += 1
,则新值将在Python中计算(并且可能会发生竞争条件)。因此,在此类计数器查询中,请始终包含上面两个示例中所示的列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句