使用psycopg2返回值

Cod*_*ngo 9 django postgresql psycopg2

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

id_of_new_row = cursor.lastrowid()
Run Code Online (Sandbox Code Playgroud)

其中我得到了新创建或修改的行的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))
Run Code Online (Sandbox Code Playgroud)

哪个不起作用,可能是因为在提交之后它才会知道id ...

救命!

Mag*_*der 18

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

cursor.execute("INSERT INTO .... RETURNING id")
id_of_new_row = cursor.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)

应该适用于您的场景.