【发布时间】:2015-12-09 18:22:16
【问题描述】:
我的 Flask 应用程序中有 SQLAlchemy 模型:
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
photos = db.relationship('Photo', lazy='joined')
class Photo(db.Model):
__tablename__ = 'photos'
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
photo = db.Column(db.String(255))
当我查询用户时,我会自动获取用户的照片。但我注意到如果用户有很多照片,查询u = User.query.get(1) 会变得很慢。我也这样做,但手动使用 lazy='noload' 选项
u = User.query.get(1)
photos = Photo.query.filter_by(user_id == 1)
在相同的数据上,它的工作速度更快。问题出在哪里,是 sql join 慢(不要这么认为,因为它开始挂在 100-1kk 个照片对象上,而不是那么大的数据)还是 SQLAlchemy 出了什么问题?
【问题讨论】:
-
我觉得this可能对你有用。
-
我认为这不是我的问题,我的情况 - 加入与否,在主题中你提到的花花公子只是在循环中加载记录,当我制作时,像这样(伪代码)'u.photos = 照片;ujosonify(u)' 没关系,效果很好。不过还是谢谢你!
标签: python sqlalchemy