Python 使用关系数据库SQLAlchemy查询单个表

Python 使用关系数据库SQLAlchemy查询单个表,python,jquery,json,flask,sqlalchemy,Python,Jquery,Json,Flask,Sqlalchemy,我有三个表:用户、角色、部门 我要使用选定的以下筛选器查询所有用户: Department.name、Role.name和User.degree 我找不到解决这个问题的办法,任何建议都很好 以下是我的简化模型: class User(UserMixin, db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) password_hash = db.Column(db

我有三个表:用户、角色、部门

我要使用选定的以下筛选器查询所有用户:
Department.name、Role.name和User.degree

我找不到解决这个问题的办法,任何建议都很好

以下是我的简化模型:

class User(UserMixin, db.Model):

    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    password_hash = db.Column(db.String(128))
    degree = db.Column(db.String(20),default=None)
    department_id = db.Column(db.Integer, db.ForeignKey('departments.id'))
    role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))


class Department(db.Model):

    __tablename__ = "departments"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(sqlalchemy.types.NVARCHAR(100), unique=True)
    user = db.relationship('User', backref='department',
                                lazy='dynamic')

class Role(db.Model):

    __tablename__ = 'roles'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(sqlalchemy.types.NVARCHAR(100), unique=True)
    users = db.relationship('User', backref='role',
                                lazy='dynamic')

这是一个带有连接的简单查询。您可以使用部门过滤器修改“部门”,也可以使用相同的过滤器修改“角色”。您应该使用所需的字段修改select部分(
session.query(User.id)

users = (session.query(User.id).join(Department, Department.user == User.id).join(Role, Role.user == User.id).filter(Department.name=="department").filter(Role.name=="role").group_by(User.id))
users = (session.query(User.id).join(Department, Department.user == User.id).join(Role, Role.user == User.id).filter(Department.name=="department").filter(Role.name=="role").group_by(User.id))