Возвращение значения с psycopg2

Идеально я хотел бы смочь сделать что-то как:

id_of_new_row = cursor.lastrowid()

в котором я получаю идентификатор недавно созданной или измененной строки. Но это не доступно через psycopg2. С другой стороны, я попробовал это:

id_of_new_row = cursor.execute('INSERT INTO this_table (value1, value2, value3) VALUES (%s, %s, %s) RETURNING id', (some_value1, some_value2, some_value3))

который не работает, вероятно, потому что это не будет знать идентификатор, пока фиксация не будет сделана...

На помощь!

9
задан Cody Django 27 January 2010 в 16:12
поделиться

2 ответа

Это конвенция в C # -Compiler. Как будто он говорит на MSDN-странице на «Использование атрибутов» :

по соглашению, все имена атрибутов со словом «атрибут» отличить их от других предметов в .NET Framework. Тем не менее, вы делаете не нужно указывать атрибут Суффикс при использовании атрибутов в коде. Например, [DLLLIMPORT ] эквивалентно к [DLLLIMPORTATTRIBUTE] , но DLLIMPORTATTRIBUTE - это атрибут Фактическое имя в .NET Framework.

Это работает так же в VB.Net .

-121--2151612-

Конечно, он будет знать идентификатор, как только команда завершится, вот как возвращается. Вам нужно на самом деле сделать это, хотя, так что-то вроде:

cursor.execute("INSERT INTO .... RETURNING id")
id_of_new_row = cursor.fetchone()[0]

должно работать в вашем сценарии.

18
ответ дан 4 December 2019 в 10:04
поделиться

RETURNING работает на Postgresql >= 8.2

3
ответ дан 4 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: