Ejecuto una instrucción INSERT INTO
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
y quiero obtener la clave primaria.
Mi mesa tiene 2 columnas:
id primary, auto increment
height this is the other column.
¿Cómo obtengo el "id" después de insertar esto?
Respuestas:
Use
cursor.lastrowid
para obtener la última ID de fila insertada en el objeto del cursor, oconnection.insert_id()
para obtener la ID de la última inserción en esa conexión.fuente
insert_id
?lastrowid
Solo está disponible después de que se confirme la transacción actual?Además,
cursor.lastrowid
(una extensión dbapi / PEP249 compatible con MySQLdb):cursor.lastrowid
es algo más baratoconnection.insert_id()
y mucho más barato que otro viaje de ida y vuelta a MySQL.fuente
cursor.lastrowid
más barato queconnection.insert_id()
?cursor.lastrowid
devolver algo diferente aconnection.insert_id()
.cursor.lastrowid
devolvió la última identificación de inserción,connection.insert_id()
devuelta0
. ¿Como puede ser?La especificación DBAPI de Python también define el atributo 'lastrowid' para el objeto cursor, así que ...
... también debería funcionar, y obviamente se basa en la conexión.
fuente
o
fuente
select last_insert_id()
desde la CLI en una máquina LinuxEsto podría ser solo un requisito de PyMySql en Python, pero descubrí que tenía que nombrar la tabla exacta para la que deseaba la ID:
En:
Fuera: 5
... o cualquiera que sea el valor correcto de Batch_ID
fuente