Eu executo uma instrução INSERT INTO
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
e quero obter a chave primária.
Minha tabela possui 2 colunas:
id primary, auto increment
height this is the other column.
Como obtenho o "id" depois de inseri-lo?
Respostas:
Use
cursor.lastrowid
para obter o último ID da linha inserido no objeto cursor, ouconnection.insert_id()
para obter o ID da última inserção nessa conexão.fonte
insert_id
retornará?lastrowid
Só está disponível após a transação atual ser confirmada?Além disso,
cursor.lastrowid
(uma extensão dbapi / PEP249 suportada pelo MySQLdb):cursor.lastrowid
é um pouco mais barato queconnection.insert_id()
e muito mais barato que outra viagem de ida e volta ao MySQL.fonte
cursor.lastrowid
mais barato queconnection.insert_id()
?cursor.lastrowid
retornou algo diferenteconnection.insert_id()
.cursor.lastrowid
retornou o último ID de inserção,connection.insert_id()
retornado0
. Como pode ser?A especificação DBAPI do Python também define o atributo 'lastrowid' para o objeto cursor, então ...
... deve funcionar também, e é obviamente baseado em cada conexão.
fonte
ou
fonte
select last_insert_id()
da CLI em uma máquina LinuxIsso pode ser apenas um requisito do PyMySql no Python, mas descobri que precisava nomear a tabela exata para a qual queria o ID:
No:
Out: 5
... ou qualquer que seja o valor correto de Batch_ID
fonte