¿Cómo obtengo la "id" después de INSERTAR en la base de datos MySQL con Python?
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?
Aceptado
Úselo cursor.lastrowid
para 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.
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.lastrowid
Es algo más barato connection.insert_id()
y mucho más barato que otro viaje de ida y vuelta a MySQL.
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.