Sqlalchemy:如何使用aggreated值更新表?

时间:2016-09-22 09:40:11

标签: python postgresql sqlalchemy

我想使用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创建一个临时表并使用它,但必须有一个更好的方法。

0 个答案:

没有答案