有人能帮忙吗?我有一个疑问(见下文)
dets = config.Se.query(db.A).filter(db.B.clientref != None,
db.A.id == db.B.clientref,
db.A.ignored == False).\
order_by(desc(db.B.date_lts))
if _querya != ():
tmp_dets = dets.filter(*_querya)
dets = tmp_dets
d_results2 = dets.limit(300).all()
d_results = dets.all()
print len(d_results2), len(d_results)
对于我的测试查询,print语句返回45。在
我做错什么了?我只从表A中选择(即使我使用表B与A的多对一关系来限制和排序结果集)。假设表A包含客户机,表B包含包含日期的订单(最后一次看到),我想对结果集进行排序,以便首先显示具有最新订单的客户机。在
我们可以忽略querya。它允许设置额外的过滤器来进行查询,这样可以很好地工作。在
我希望将结果集限制在表A中最多300行,以避免在用户设置太宽的查询参数时GUI阻塞。然而,我注意到,应该返回5行(从数据库确认)的测试查询只返回了4行。在
为了调试这个问题,我将原来的查询结果集重命名为d_results2,并创建了d_results,没有限制(300)。我能看到不同。d_results2被限制为4个。在
怎么回事?我假设limit(300)不会做任何事情,因为结果集的整体只有五行。在
汉努
多亏了Ilja的评论,这个问题比我想象的要复杂一点,但最终还是把它弄对了。如果有人感兴趣,现在可以查询:
这似乎很管用。在
汉努
相关问题 更多 >
编程相关推荐