Python 数据库getAll按日期排序,带索引

Python 数据库getAll按日期排序,带索引,python,python-2.7,rethinkdb,Python,Python 2.7,Rethinkdb,我见过类似的问题,但没有一个答案是理想的,因为它们要么效率低下,要么不起作用 我有一个包含以下行的数据库表: id提要日期时间内容 我需要迭代表中的每一项,feed是example(或任何其他值;始终是字符串),但迭代需要按datetime排序 不幸的是,我不能在内存中完成,因为一个用户可能有成千上万个条目 我试图修改找到的代码,但没有取得任何进展。我还修改了最佳答案,运行时出现错误 打印r.db('main')。表格('data')。在([feedid,r.minval]、[feedid,r.

我见过类似的问题,但没有一个答案是理想的,因为它们要么效率低下,要么不起作用

我有一个包含以下行的数据库表:

id提要日期时间内容

我需要迭代表中的每一项,
feed
example
(或任何其他值;始终是字符串),但迭代需要按
datetime
排序

不幸的是,我不能在内存中完成,因为一个用户可能有成千上万个条目

我试图修改找到的代码,但没有取得任何进展。我还修改了最佳答案,运行时出现错误

打印r.db('main')。表格('data')。在([feedid,r.minval]、[feedid,r.maxval]、index=“feedByTime”)。按(index=“feedByTime”)。运行(conn)

它抛出了这个错误

回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist packages/referencedb/net.py”,第196行,在__
val_str=','.join(映射(repr,self.items[:10]))
TypeError:序列索引必须是整数,而不是“切片”

如果我从之间的
中删除
index=“feedByTime”
,我会得到这个错误

referencedb.errors.ReqlQueryLogicError:在对索引“id”进行调用之后,无法按索引“feedByTime”进行订购。

索引(
feedByTime
)是这样制作的

r.db('main')。表('data')。索引_创建(“feedByTime”,lambda x:[x[“feed”],x[“datetime”]])。运行(conn)


任何建议都很好,请提前感谢。

您的查询有问题:

而不是

query = (
    r.db('main').table('data')
     .between(
         [feedid, r.minval],
         [feedid, r.maxval],
         index="feedByTime"
     )
     .order_by(index="feedByTime")
     .run(conn)
)
试一试


您的查询有一个问题:

而不是

query = (
    r.db('main').table('data')
     .between(
         [feedid, r.minval],
         [feedid, r.maxval],
         index="feedByTime"
     )
     .order_by(index="feedByTime")
     .run(conn)
)
试一试


在我看来,那个代码是正确的。你正在运行最新版本的Python驱动程序吗?@mlucy是的,一切都在最新版本上。我尝试过的任何东西都不起作用,我一定是遗漏了什么。这个错误看起来可能是Python驱动程序中的错误。我会在GitHub问题跟踪器上打开一个bug:是的,我相信可能是这样。我编辑了Python驱动程序以添加一个异常,该异常“修复”了它。我会打开一个bug报告。似乎它只需要以更友好的方式处理该异常,而不是停止整个查询的运行。在您发表评论之前,我实际上没有考虑过驱动程序错误,所以谢谢您。:)在我看来,那个代码是正确的。你正在运行最新版本的Python驱动程序吗?@mlucy是的,一切都在最新版本上。我尝试过的任何东西都不起作用,我一定是遗漏了什么。这个错误看起来可能是Python驱动程序中的错误。我会在GitHub问题跟踪器上打开一个bug:是的,我相信可能是这样。我编辑了Python驱动程序以添加一个异常,该异常“修复”了它。我会打开一个bug报告。似乎它只需要以更友好的方式处理该异常,而不是停止整个查询的运行。在您发表评论之前,我实际上没有考虑过驱动程序错误,所以谢谢您。:)