Я выполняю инструкцию INSERT INTO
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
и я хочу получить первичный ключ.
Моя таблица имеет 2 столбца:
id primary, auto increment
height this is the other column.
Как я могу получить «идентификатор», после того, как я только что вставил это?
Ответы:
Используйте
cursor.lastrowid
для получения последнего идентификатора строки, вставленного в объект курсора, илиconnection.insert_id()
для получения идентификатора из последней вставки в этом соединении.источник
insert_id
вернется?lastrowid
только после того, как текущая транзакция совершается?Также
cursor.lastrowid
(расширение dbapi / PEP249, поддерживаемое MySQLdb):cursor.lastrowid
несколько дешевлеconnection.insert_id()
и намного дешевле, чем другое путешествие в MySQL.источник
cursor.lastrowid
дешевле чемconnection.insert_id()
?cursor.lastrowid
вернули что-то другое, чемconnection.insert_id()
.cursor.lastrowid
вернул последний идентификатор вставки,connection.insert_id()
вернулся0
. Как это может быть?Спецификация Python DBAPI также определяет атрибут lastrowid для объекта курсора, так что ...
... должно работать тоже, и это, очевидно, для каждого соединения.
источник
или
источник
select last_insert_id()
из CLI на машине LinuxЭто может быть просто требованием PyMySql в Python, но я обнаружил, что мне нужно назвать точную таблицу, для которой я хотел получить идентификатор:
В:
Out: 5
... или любое другое правильное значение Batch_ID
источник