假设我有表 tags
有一个字段 count
表示有多少 items
已被给定标签标记。
添加带有现有标签的新项目后,如何在 SQLAlchemy 中增加此计数器?
使用纯 SQL,我将执行以下操作:
INSERT INTO `items` VALUES (...)
UPDATE `tags` SET count=count+1 WHERE tag_id=5
但是我如何在 SQLAlchemy 中表达 count=count+1
?
原文由 bodacydo 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你有类似的东西:
您可以像这样增加字段:
或者,如果您有一些映射模型,您可以选择编写:
两个版本都将返回您要求的 sql 语句。但是,如果您不包括该列而只写
m.counter += 1
,那么新值将在 Python 中计算(并且可能会发生竞争条件)。因此,在此类计数器查询中始终包含一个列,如上面两个示例所示。