Wykonuję instrukcję INSERT INTO
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
i chcę zdobyć klucz podstawowy.
Moja tabela ma 2 kolumny:
id primary, auto increment
height this is the other column.
Jak uzyskać „identyfikator” po tym, jak właśnie go wstawiłem?
Odpowiedzi:
Użyj,
cursor.lastrowid
aby wstawić identyfikator ostatniego wiersza do obiektu kursora lubconnection.insert_id()
aby uzyskać identyfikator z ostatniej wstawki w tym połączeniu.źródło
insert_id
powróci?lastrowid
dostępny tylko po zatwierdzeniu bieżącej transakcji?Ponadto
cursor.lastrowid
(rozszerzenie dbapi / PEP249 obsługiwane przez MySQLdb):cursor.lastrowid
jest nieco tańszyconnection.insert_id()
i znacznie tańszy niż kolejna podróż w obie strony do MySQL.źródło
cursor.lastrowid
tańszy niżconnection.insert_id()
?cursor.lastrowid
zwróciło coś innego niżconnection.insert_id()
.cursor.lastrowid
zwrócił ostatni identyfikator wstawki,connection.insert_id()
zwrócił0
. Jak to możliwe?Specyfikacja DBAPI w języku Python definiuje również atrybut „lastrowid” dla obiektu kursora, więc ...
... powinien również działać, i oczywiście jest oparty na połączeniu.
źródło
lub
źródło
select last_insert_id()
Może to być tylko wymóg PyMySql w Pythonie, ale okazało się, że muszę podać dokładną tabelę, dla której chciałbym mieć identyfikator:
W:
Out: 5
... lub cokolwiek to jest poprawna wartość Batch_ID
źródło