Python 从子表中筛选结果
我一直在阅读SQLAlchemy的文档,对此我无法理解。考虑以下设置:Python 从子表中筛选结果,python,sqlalchemy,Python,Sqlalchemy,我一直在阅读SQLAlchemy的文档,对此我无法理解。考虑以下设置: boardset_user_association_table = db.Table('boardset_user_association', db.Column('user_id', db.Integer, db.ForeignKey('user.id')), db.Column('boardset_id', db.Integer, db.ForeignKey('boardset.id')) ) cla
boardset_user_association_table = db.Table('boardset_user_association',
db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
db.Column('boardset_id', db.Integer, db.ForeignKey('boardset.id'))
)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True)
password = db.Column(db.String(30))
boardSet = db.relationship('BoardSet', secondary=boardset_user_association_table, backref='user')
def __repr__(self):
return "<User('%s','%s')>" % (self.username, self.id)
class BoardSet(db.Model):
__tablename__ = 'boardset'
id = db.Column(db.Integer, primary_key=True)
created = db.Column(db.DateTime)
boards = db.relationship('Board', backref='boardset', lazy='dynamic')
def __repr__(self):
return "<BoardSet('%s','%s')>" % (self.id, self.created)
boardset\u user\u association\u table=db.table('boardset\u user\u association',
db.Column('user\u id',db.Integer,db.ForeignKey('user.id')),
db.Column('boardset_id',db.Integer,db.ForeignKey('boardset.id'))
)
类用户(db.Model):
id=db.Column(db.Integer,主键=True)
username=db.Column(db.String(20),unique=True)
密码=db.Column(db.String(30))
boardSet=db.relationship('boardSet',secondary=boardSet\u user\u association\u table,backref='user')
定义报告(自我):
返回“”%(self.username,self.id)
类别板集(db.Model):
__tablename_uu='boardset'
id=db.Column(db.Integer,主键=True)
created=db.Column(db.DateTime)
boards=db.relationship('Board',backref='boardset',lazy='dynamic')
定义报告(自我):
返回“”%(self.id,self.created)
我从用户对象获取项目集合,但我无法对实际数据执行任何过滤等操作。例如,在某些情况下,我希望在创建的字段中按值对User.boardSet的结果进行排序那么,您也可以对
boardSet
使用lazy='dynamic'
,在这种情况下,您将获得以下好处:
dynamic
-该属性将返回预配置的查询对象
所有读取操作,可对其执行进一步的筛选操作
在迭代结果之前应用
当然,您可以在加载simply buy doing
sorted(myuser.boardSet,key=lambda bs:bs.created)后轻松地在内存中订购项目。
非常感谢。。我知道我错过了什么!
class User(...):
...
boardSet = db.relationship('BoardSet', secondary=boardset_user_association_table, backref='user', lazy='dynamic')
myuser = session.query(User).get(1)
boardsets = myuser.boardSet.order_by(BoardSet.created)