How do I get the "id" after INSERT into MySQL database with Python? How do I get the "id" after INSERT into MySQL database with Python? python python

How do I get the "id" after INSERT into MySQL database with Python?


Use cursor.lastrowid to get the last row ID inserted on the cursor object, or connection.insert_id() to get the ID from the last insert on that connection.


Also, cursor.lastrowid (a dbapi/PEP249 extension supported by MySQLdb):

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

cursor.lastrowid is somewhat cheaper than connection.insert_id() and much cheaper than another round trip to MySQL.


Python DBAPI spec also define 'lastrowid' attribute for cursor object, so...

id = cursor.lastrowid

...should work too, and it's per-connection based obviously.