如何从ReQL查询中获取数据库和表名

时间:2016-10-13 15:29:38

标签: python rethinkdb

假设我有以下RethinkDB查询(在iPython中打印):

In [32]: data_to_archive
Out[32]: <RqlQuery instance: r.db('sensor_db').table('sensor_data').filter(lambda var_2: (r.row['timestamp'] < (r.now() - r.expr(259200.0)))) >

查询位于数据库sensor_db和表sensor_data上,从打印输出中可以清楚地看到。有没有办法可以将此信息作为RqlQuery实例的属性检索?

(我想这样做的原因是编写简洁的代码:查询,数据库和表当前都作为输入参数分别传递给函数,但后两者实际上包含在前者中)。

1 个答案:

答案 0 :(得分:1)

不确定是否存在。与此同时,除了我的妈妈之外,有点丑陋并没有真正伤害任何人:

In [57]: mom = lambda q, fn: re.search(fn + "\(\'(.*?)\'\)", str(q)).group(1)

In [58]: rql = r.db("foo").table('bar').filter(lambda x: x)

In [59]: mom(rql, 'db')
Out[59]: 'foo'

In [60]: mom(rql, 'table')
Out[60]: 'bar'