reinstdb从insert python中提取生成的\u键

2024-10-06 11:50:37 发布

您现在位置:Python中文网/ 问答频道 /正文

本质上,我试图为单个记录插入获取生成的键。比如:

rethinkdb.table('test').insert(request.data).pluck('generated_keys')[0].run(connection)

然后让它返回如下内容:

^{pr2}$

Tags: runtest内容datarequest记录tablekeys
2条回答

我只想给你一些建议,以便你以后能弄清楚。首先,可以使用typeOf来查找数据类型。在

r.table('dummy').insert({f: "foo"}).typeOf()
"OBJECT"

所以你知道如果返回一个对象。接下来,您将转到rejectdb文档,尝试找到一些类似的函数。一个好的猜测是get_fieldhttp://rethinkdb.com/api/javascript/get_field/

可以对对象调用get_字段:

sequence.getField(attr) → sequence

singleSelection.getField(attr) → value

object.getField(attr) → value

让我们看看它返回了什么:

^{pr2}$

让我们找到一个命令来返回数组中的元素。您可以再次检查文档,并注意到nth命令从数组返回第n个元素。因此,我们现在可以这样做:

r.table('dummy').insert({f: "foo"}).getField('generated_keys').nth(0)
"c2b1bf69-a926-4c27-b1a6-011d47c700df"

让我们试着简化一下。使用getField是注释。为了简短起见,可以使用方括号()从object获取单个字段

r.table('dummy').insert({f: "foo"})('generated_keys').nth(0)
"77f4aca6-9219-494e-9998-23eb9abcd5e0"

但是使用nth也会对字段进行一些注释。我们能说得简短些吗。幸运的是,括号也可以调用数组。http://rethinkdb.com/api/javascript/bracket/

The () command also accepts integer arguments as array offsets, like the nth command.

结合我们的一切:

r.table('dummy').insert({f: "foo"})('generated_keys')(0)

这些都是直接在dataexplorer上运行的,但是我认为您可以通过查看JavaScript将它们转换成Python并将其转换为Python。在

在Python中,如果要返回插入文档的所有主键数组,可以执行以下操作:

 r.table('test').insert({ "hello": 'world' })['generated_keys'].run(conn)

如果您想返回第一个文档的主关键字,请执行以下操作:

^{pr2}$

相关问题 更多 >