Ответ 1
Используйте cursor.lastrowid
, чтобы получить идентификатор последней строки, вставленный в объект курсора, или connection.insert_id()
, чтобы получить идентификатор из последней вставки в этом соединении.
Я выполняю инструкцию INSERT INTO
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
и я хочу получить первичный ключ.
Моя таблица имеет 2 столбца:
id primary, auto increment
height this is the other column.
Как мне получить "id", после того как я только вставил это?
Используйте 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 также определяет атрибут "lastrowid" для объекта курсора, поэтому...
id = cursor.lastrowid
... тоже должен работать, и очевидно, что это за соединение.
SELECT @@IDENTITY AS 'Identity';
или
SELECT last_insert_id();