如何从 ReQL 查询中获取数据库和 table 名称
How to get the database and table name from a ReQL query
假设我有以下 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
和 table sensor_data
上,从打印输出中可以清楚地看出。有什么方法可以检索此信息作为 RqlQuery
实例的属性?
(我想这样做的原因是为了编写简洁的代码:查询、数据库和 table 目前都作为函数的输入参数分开传递,但后两者实际上是包含在前者中)。
不确定它是否存在。与此同时,一点点丑陋并没有真正伤害到任何人,除了我妈妈:
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'
假设我有以下 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
和 table sensor_data
上,从打印输出中可以清楚地看出。有什么方法可以检索此信息作为 RqlQuery
实例的属性?
(我想这样做的原因是为了编写简洁的代码:查询、数据库和 table 目前都作为函数的输入参数分开传递,但后两者实际上是包含在前者中)。
不确定它是否存在。与此同时,一点点丑陋并没有真正伤害到任何人,除了我妈妈:
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'