使用psycopg2返回值

时间:2010-01-26 23:05:02

标签: django postgresql psycopg2

理想情况下,我希望能够做到这样的事情:

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

帮助!

2 个答案:

答案 0 :(得分:18)

当然,它会在命令完成后立即知道ID,这就是RETURNING的实现方式。你需要实际获取它,所以像:

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

应该适用于您的场景。

答案 1 :(得分:3)

RETURNING适用于Postgresql> = 8.2