Jav*_*aSa 10 python sqlalchemy python-2.7
我读到了关于 sqlalchemy 的内容,joinloads就像这里提到的那样,我对简单地连接两个表(就像这里提到的那样)的好处或特殊用法有点困惑
我想知道什么时候使用每种方法,目前我没有看到使用它有什么好处joinloads,你能解释一下它们的区别吗?以及更喜欢的用例joinloads
Sqlalchemy 文档说joinedload()不能替代join()也不joinedload()影响查询结果:
Query.join()
Query.options(joinedload())
Run Code Online (Sandbox Code Playgroud)
假设您想要获取与您正在查询的数据已经相关的相同日期,但是当您获取此相关数据时,它不会更改查询结果,它就像附件一样。最好看看sqlalchemy 文档 joinload
class User(db.Model):
...
addresses = relationship('Address', backref='user')
class Address(db.Model):
...
user_id = Column(Integer, ForeignKey('users.id'))
Run Code Online (Sandbox Code Playgroud)
下面的代码查询用户过滤器并返回该用户,并且您可以选择获取该用户地址。
user = db.session.query(User).options(joinedload(User.addresses)).filter(id==1).one()
Run Code Online (Sandbox Code Playgroud)
现在让我们看看加入:
user = db.session.query(User).join(Address).filter(User.id==Address.user_id).one()
Run Code Online (Sandbox Code Playgroud)
查询joinedload()获取该用户地址。
其他查询,查询两个表,检查两个表上的用户id,所以结果取决于此。但joinedload()如果用户没有任何地址,您将有用户但没有地址。如果join()用户没有地址,则不会产生结果。
| 归档时间: |
|
| 查看次数: |
6124 次 |
| 最近记录: |