问题:sqlalchemy的outerjoin外表时需要添加条件,使用filter过滤会到where中,而不是在on语句中
解决:使用and_
方法:
offset_num = (page - 1) * pagesize
q = select(
User.uid, User.username, User.fullname, User.national_id, User.phone,
User.gender, User.last_login, User.status, User.create_time,
func.group_concat(UserRole.role_id).label('role_ids')).outerjoin(
UserRole, and_(User.uid == UserRole.user_uid,
UserRole.is_delete == obj_get['is_delete'])).filter(
User.is_delete == obj_get['is_delete']).group_by(
User.uid).offset(offset_num).limit(pagesize)
r = await db.execute(q)
return r.all()