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))