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

Я выполняю инструкцию INSERT INTO

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

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

Моя таблица имеет 2 столбца:

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

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

Ответ 1

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

Ответ 2

Кроме того, 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.

Ответ 3

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

id = cursor.lastrowid

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

Ответ 4

SELECT @@IDENTITY AS 'Identity';

или

SELECT last_insert_id();