lim*_*boy 9 python orm sqlalchemy
如果我有一个用户模型和文章模型,用户和文章是一对多的关系.所以我可以访问这样的文章
user = session.query(User).filter(id=1).one()
print user.articles
Run Code Online (Sandbox Code Playgroud)
但这将列出用户的所有文章,如果我想将文章限制为10怎么办?在rails中有一种all()方法可以有限制/偏移.在sqlalchemy还有一种all()方法,但不采取参数,如何实现这一目标?
编辑:
它似乎user.articles[10:20]是有效的,但sql在查询中没有使用10/20.所以实际上它会加载所有匹配的数据,并在python中过滤?
Fre*_*den 13
解决方案是使用SQLAlchemy文档dynamic的集合配置技术部分中描述的关系.
通过将关系指定为
class User(...):
# ...
articles = relationship('Articles', order_by='desc(Articles.date)', lazy='dynamic')
Run Code Online (Sandbox Code Playgroud)
然后user.articles.limit(10),您可以编写哪些将生成并执行查询以获取用户的最后十篇文章.或者,[x:y]如果您愿意,可以使用语法自动生成LIMIT子句.
性能应该是合理的,除非您想要为100个左右的用户查询过去的十篇文章(在这种情况下,将向服务器发送至少101个查询).
| 归档时间: |
|
| 查看次数: |
8046 次 |
| 最近记录: |