Возврат значения с помощью psycopg2 - PullRequest
9 голосов
/ 27 января 2010

В идеале я бы хотел иметь возможность сделать что-то вроде:

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))

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

Помощь!

Ответы [ 2 ]

18 голосов
/ 27 января 2010

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

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

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

3 голосов
/ 24 марта 2010

ВОЗВРАТ работает на Postgresql> = 8.2

...