我有以下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关系 . 用户名在所有表中都是通用的 .