10

理想情况下,我希望能够执行以下操作:

id_of_new_row = cursor.lastrowid()

我在其中获得了新创建或修改的行的 id。但这不能通过 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))

这不起作用,可能是因为在提交之前它不会知道 id ......

帮助!

4

2 回答 2

22

当然会,命令完成后它就会知道 ID,这就是 RETURNING 的实现方式。不过,您需要实际获取它,例如:

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

应该在你的场景中工作。

于 2010-01-27T10:10:46.633 回答
3

返回适用于 Postgresql >= 8.2

于 2010-03-24T19:22:39.843 回答