How do I get the "id" after INSERT into MySQL database with Python?
Solution 1:
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.
Solution 2:
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.lastrowid
3L
>>> 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.
Solution 3:
Python DBAPI spec also define 'lastrowid' attribute for cursor object, so...
id = cursor.lastrowid
...should work too, and it's per-connection based obviously.