Estoy usando Python y psycopg2 para interactuar con postgres.
Cuando inserto una fila ...
sql_string = "INSERT INTO hundred (name,name_slug,status) VALUES ("
sql_string += hundred_name + ", '" + hundred_slug + "', " + status + ");"
cursor.execute(sql_string)
... ¿cómo obtengo el ID de la fila que acabo de insertar? Molesto:
hundred = cursor.fetchall()
devuelve un error, mientras usa RETURNING id
:
sql_string = "INSERT INTO domes_hundred (name,name_slug,status) VALUES ("
sql_string += hundred_name + ", '" + hundred_slug + "', " + status + ") RETURNING id;"
hundred = cursor.execute(sql_string)
simplemente regresa None
.
ACTUALIZACIÓN: También lo hace currval
(aunque usar este comando directamente en postgres funciona):
sql_string = "SELECT currval(pg_get_serial_sequence('hundred', 'id'));"
hundred_id = cursor.execute(sql_string)
¿Alguien puede aconsejarme?
¡Gracias!
python
postgresql
psycopg2
AP257
fuente
fuente
id
deRETURNING id
debe ser el nombre del campo del campo de número de serie / primaria.RETURNING id
al final de laINSERT
consulta lo solucionó.Terminé aquí porque tuve un problema similar, pero estamos usando Postgres-XC, que aún no admite la cláusula RETURNING ID. En ese caso, puede utilizar:
¡Por si acaso le fuera útil a alguien!
fuente
Considere una cláusula de DEVOLUCIÓN http://www.postgresql.org/docs/8.3/static/sql-insert.html
fuente