¿Cómo obtengo la "id" después de INSERTAR en la base de datos MySQL con Python?

Resuelto TIMEX asked hace 14 años • 5 respuestas

Ejecuto una instrucción INSERT INTO

cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))

y quiero obtener la clave principal.

Mi tabla tiene 2 columnas:

id      primary, auto increment
height  this is the other column.

¿Cómo obtengo la "identificación" después de insertar esto?

TIMEX avatar Mar 31 '10 03:03 TIMEX
Aceptado

Úselo cursor.lastrowidpara obtener el ID de la última fila insertada en el objeto del cursor, o connection.insert_id()para obtener el ID de la última inserción en esa conexión.

Amber avatar Mar 30 '2010 20:03 Amber

Además, cursor.lastrowid(una extensión dbapi/PEP249 compatible con MySQLdb):

>>> import MySQLdb
>>> connection = MySQLdb.connect(user='root')
>>> cursor = connection.cursor()
>>> cursor.execute('INSERT INTO sometable VALUES (...)')
1L
>>> connection.insert_id()
3L
>>> cursor.lastrowid
3L
>>> cursor.execute('SELECT last_insert_id()')
1L
>>> cursor.fetchone()
(3L,)
>>> cursor.execute('select @@identity')
1L
>>> cursor.fetchone()
(3L,)

cursor.lastrowidEs algo más barato connection.insert_id()y mucho más barato que otro viaje de ida y vuelta a MySQL.

Andrew avatar Sep 24 '2010 19:09 Andrew

La especificación Python DBAPI también define el atributo 'lastrowid' para el objeto del cursor, así que...

id = cursor.lastrowid

... debería funcionar también, y obviamente se basa en cada conexión.

Htechno avatar Jan 03 '2011 00:01 Htechno