1

我想做这样的事情:

    async with app.pg_pool.acquire() as pg:
        uid = await pg.execute('INSERT INTO users (created, keyed, key, email) '
                               'VALUES ($1, $2, $3, $4) RETURNING id',
                               time, time, key, rj['email'])['id']

但是Connection.execute似乎除了状态之外没有返回任何东西:

https://magicstack.github.io/asyncpg/current/api/index.html?highlight=returning#asyncpg.connection.Connection.execute

问题也可以表述为:RETURNING使用 asyncpg 时如何取回语句的响应?

4

2 回答 2

5

只需使用Connection.fetchval()而不是execute().

于 2017-11-06T00:57:39.700 回答
0

Connection.execute返回 INSERT 的状态。如果您需要记录、记录或值,请使用以下选项之一,而不是Connection.execute

  1. Connection.fetchval- 只返回一个指定字段的值。null如果未指定字段,则返回。
  2. Connection.fetch- 将返回一个数组dict。每个 dict 将具有RETURNING语句后指定的字段列表。
  3. Connection.fetchrow- 将返回一个在语句dict之后指定的字段列表RETURNING
于 2021-07-09T06:21:50.713 回答