Как использовать SQLAlchemy Max () с объединениями? - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть следующий оператор 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.Имя пользователя является общим для всех таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...