【发布时间】:2019-12-13 12:58:37
【问题描述】:
我有两个这样的表:
class Role(db.Model):
__tablename__ = 'roles'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
index = db.Column(db.String(64))
users = db.relationship('User',
backref='role', lazy='dynamic')
class User(UserMixin, db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), unique=True, index=True)
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
然后我尝试进行 2 种查询来获取关系模型的数据。
首先,我是这样写的:
user = db.session.query(User, Role.index).filter_by(email=form.email.data).first()
第二个我使用join 声明:
user = db.session.query(User, Role.index).join(Role).filter(User.email==form.email.data).first()
我的问题是,该查询有什么区别,而在第二个查询中我使用 join 语句但结果仍然相同。
为了快速查询或性能,我应该使用第一个还是第二个..?
【问题讨论】:
标签: python sql sqlalchemy flask-sqlalchemy