Как получить " 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
...должно работать тоже, и это на основе каждого соединения, очевидно.