如何在单个RethinkDB请求中获得多个查询的响应?

时间:2013-10-21 21:54:13

标签: rethinkdb rethinkdb-python

我想压缩两个请求:

a = r.table('A').run(conn)
b = r.table('B').run(conn)

在一个单一的。类似的东西:

out = some_reql({
    'a': r.table('A'),
    'b': r.table('B')
}).run(conn)
out['a']
out['b']

1 个答案:

答案 0 :(得分:1)

如果您希望在单个查询中同时使用union,请执行此操作

r.union(r.table("A"), r.table("B"))

这将返回一个流对象,它是两个流的串联。但是,您将无法分辨一个流的结束位置和下一个流的开始位置。目前无法在同一查询中返回2个单独的流对象。因此,如果您希望能够将它们用作单独的流,则需要执行2个单独的查询。有什么理由对你不起作用吗?


如果您的流很大,那么这对性能不会产生很大影响,因为评估每个流的结果无论如何都需要多个请求。但是,如果它们很小,那么你可以将它们强制转换为数组:

{"a" : r.table("A").coerce_to("ARRAY"),
 "b" : r.table("B").coerce_to("ARRAY")}

只有当您的流适合内存时才能执行此操作。