Как получить " id " после вставки в базу данных MySQL с Python?

Я выполняю INSERT INTO statement

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

и я хочу получить первичный ключ.

моя таблица имеет 2 колонки:

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

Как получить " id " после того, как я только что вставил это?

4 ответов


использовать cursor.lastrowid получить последнюю строку код вставлен на объект курсор, или connection.insert_id() получить идентификатор последней вставки на связи.


и cursor.lastrowid (расширение dbapi/PEP249, поддерживаемое 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 несколько дешевле, чем connection.insert_id() и намного дешевле, чем другая поездка туда и обратно в MySQL.


Python DBAPI spec также определяет атрибут "lastrowid"для объекта курсора, поэтому...

id = cursor.lastrowid

...должно работать тоже, и это на основе каждого соединения, очевидно.


SELECT @@IDENTITY AS 'Identity';

или

SELECT last_insert_id();