我有以下SQL语句,我想转换为SQLAlchemy(尽可能最好) .
SELECT distinct u.username, u.receipt, u.expires_at, u.account_type, max(r.acctupdatetime) as lastActivity
FROM user u
JOIN radcheck c on c.username = u.username
LEFT JOIN radacct r on u.username = r.username
WHERE u.account_type != 'life'
GROUP BY u.username, u.account_type
通过这样做我完成了大部分工作:
db.session.query(User, Radcheck, RadAcct)
.join(Radcheck, User.username == Radcheck.username)
.outerjoin(RadAcct, User.username == RadAcct.username)
.group_by(User.username, User.account_type)
.filter(User.account_type != AccountType.life)
.all()
但我仍然坚持如何在RadAcct.acctupdatetime上做最大化 .
我知道语法应该是这样的:
session.query(func.max(RadAcct.acctupdatetime))
但是我如何通过这里的连接来实现呢?
顺便说一下,表没有SQLAlchemy关系 . 用户名在所有表中都是通用的 .