python - RethinkDB getAll ordered by date with index -


i've seen questions similar this, none of answers ideal because they're either inefficient or don't work.

i have database table has following rows:

id feed datetime content

i need iterate on every item in table feed example (or other value; string) iteration needs ordered datetime.

unfortunately can't in memory because there hundreds of thousands of entries single user.

i've tried modifying code found here , didn't make progress. i've adapted best answer here , error when run this;

print r.db('main').table('data').between([feedid, r.minval], [feedid, r.maxval], index="feedbytime").order_by(index="feedbytime").run(conn)

which throws error;

traceback (most recent call last): file "<stdin>", line 1, in <module> file "/usr/local/lib/python2.7/dist-packages/rethinkdb/net.py", line 196, in __str__ val_str = ', '.join(map(repr, self.items[:10])) typeerror: sequence index must integer, not 'slice'

if remove index="feedbytime" between, error instead;

rethinkdb.errors.reqlquerylogicerror: cannot order index 'feedbytime' after calling between on index 'id'

the index (feedbytime) made so;

r.db('main').table('data').index_create("feedbytime", lambda x: [x["feed"], x["datetime"]]).run(conn)

any suggestions great, in advance.

your query has issue:

instead of

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

try

query = (     r.db('main').table('data')      .between(          [feedid, r.minval],          [feedid, r.maxval],          index="feedbytime"      )      .order('datetime')      .run(conn) ) 

Comments