Как вернуть первичный ключ вновь вставленной строки, используя asyncpg?
Я хотел сделать что-то вроде этого:
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
В противном случае вопрос можно сформулировать так: как мне получить ответ RETURNING
заявление при использовании asyncpg?
2 ответа
Решение
Вернет статус INSERT. Если вам нужны Record, Records или Value, используйте одно из следующих вместо
Connection.execute
:
-
Connection.fetchval
- возвращает только значение одного указанного поля. Возвратnull
если поля не указаны. -
Connection.fetch
- вернет массив. Каждый dict будет иметь список полей, указанных после утверждения. -
Connection.fetchrow
- вернетdict
со списком полей, указанным послеRETURNING
утверждение