这应该很简单,但我似乎无法弄清楚。
这是我的桌子:
class UserEvent(Base):
__tablename__ = 'user_events'
user_id = Column(Integer, ForeignKey('users.user_id'),
primary_key=True, nullable=False)
event_time = Column(DateTime, primary_key=True, nullable=False)
detect_time = Column(DateTime, nullable=False)
new_state = Column(Boolean, nullable=False)
这是一些示例数据:
+---------+---------------------+---------------------+-----------+
| user_id | event_time | detect_time | new_state |
+---------+---------------------+---------------------+-----------+
| 1 | 2012-11-12 16:12:00 | 2013-01-31 20:55:31 | 1 |
| 1 | 2012-11-12 18:24:00 | 2013-01-31 20:55:33 | 0 |
+---------+---------------------+---------------------+-----------+
我想为每个 user_id 找到最新的(event_time)UserEvent。
我试过这个:
for event, current in session.query(
UserEvent, func.max(UserEvent.event_time)).group_by(
UserEvent.user_id):
查询返回正确的“事件”(2012-11-12 18:24:00)。但是,它是不正确的(或某些东西),因为“当前”是 True。
无论表中有多少行,我总是取回最近的 event_time 和 OLDEST new_state。