如何使用 asyncpg return 新插入行的主键?
How to return the Primary Key of the newly inserted row using asyncpg?
我想做这样的事情:
async with app.pg_pool.acquire() as pg:
uid = await pg.execute('INSERT INTO users (created, keyed, key, email) '
'VALUES (, , , ) RETURNING id',
time, time, key, rj['email'])['id']
但是 Connection.execute
似乎 return 除了状态之外的任何东西:
问题可以换句话说:使用 asyncpg 时如何取回 RETURNING
语句的响应?
只需使用 Connection.fetchval() 而不是 execute()
。
Connection.execute
将 return INSERT 的状态。如果您需要 Record、Records 或 Value,请使用以下其中一项代替 Connection.execute
:
Connection.fetchval
- returns 仅指定一个字段的值。 Returns null
如果没有指定字段。
Connection.fetch
- 将 return 一个 dict
的数组。每个字典都将在 RETURNING
语句之后指定字段列表。
Connection.fetchrow
- 将 return 与 RETURNING
语句后指定的字段列表 dict
我想做这样的事情:
async with app.pg_pool.acquire() as pg:
uid = await pg.execute('INSERT INTO users (created, keyed, key, email) '
'VALUES (, , , ) RETURNING id',
time, time, key, rj['email'])['id']
但是 Connection.execute
似乎 return 除了状态之外的任何东西:
问题可以换句话说:使用 asyncpg 时如何取回 RETURNING
语句的响应?
只需使用 Connection.fetchval() 而不是 execute()
。
Connection.execute
将 return INSERT 的状态。如果您需要 Record、Records 或 Value,请使用以下其中一项代替 Connection.execute
:
Connection.fetchval
- returns 仅指定一个字段的值。 Returnsnull
如果没有指定字段。Connection.fetch
- 将 return 一个dict
的数组。每个字典都将在RETURNING
语句之后指定字段列表。Connection.fetchrow
- 将 return 与RETURNING
语句后指定的字段列表dict