我有urls
和requests
个表,我已经定义了这样的关系:
class Request(Base):
...
url_id = Column('url_id', Integer, ForeignKey(Url.id))
requests = relationship(Url, backref='requests')
这意味着我可以询问Url.requests
并获取所有以前为给定网址提出的请求。但是,我想要做的是针对一组限定在特定日期的网址获取requests
。
我可以写这个来获取我想要的结果集,但是我不知道如何整齐地打包它所以我可以遍历我的Url
个对象并为每个对象获取.requests
。理想情况下,我也想加载这些Request对象。这是我写的以获得我想要的行:
session.query(Url).join(Request).filter(Request.created >= start_date, Request.created < end_date)
如果我转储查询它看起来很合理,但是当我遍历网址并询问每个网址.requests
时,我得到所有的请求,而不仅仅是那些通过我的过滤器。是否可以使用ORM执行此操作?
答案 0 :(得分:0)
session.query(Url).join(Url.request).\
options(contains_eager(Url.request)).\
filter(Request.created >= start_date, Request.created < end_date)
应该为你效劳。查看有关加入渴望加载数据的想法的文档。