我想使用SqlAlchemy表达式语言(无ORM)更新来自另一个表的聚合值的总计表。作为一个例子,我有一个总表在一段时间内的表和一个表添加了新的计数与时间戳:
total_table = Table("total", metadata,
Column("label", String, primary_key = True),
Column("counts", Integer, nullable = False))
event_table = Table("events", metadata,
Column("label", String, nullable = False),
Column("counts", Integer, nullable = False),
Column("timestamp", DateTime, nullable = False)
现在我想用自上次更新以来事件表中的新计数总和更新所有标签的total_table计数:
新的金额很容易计算:
select([event_table.c.label, func.sum(event_table.c.counts)]).\
where(event_table.c.timestamp >= last_update_time).\
group_by(event_table.c.label)
但是如何使用此select语句中的总和更新总表中的总数?我可以从select创建一个临时表并使用它,但必须有一个更好的方法。