如何在SQLAlchemy中增加计数器

bodacydo:

假设我有一个表tags,该具有一个字段count该字段指示items使用给定标记标记了多少个

添加带有现有标签的新项目后,如何在SQLAlchemy中增加此计数器?

使用普通SQL,我将执行以下操作:

INSERT INTO `items` VALUES (...)
UPDATE `tags` SET count=count+1 WHERE tag_id=5

但是我如何count=count+1用SQLAlchemy 表达

tux21b:

如果您有类似的东西:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章