J'exécute une instruction INSERT INTO
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
et je veux obtenir la clé primaire.
Mon tableau comporte 2 colonnes:
id primary, auto increment
height this is the other column.
Comment puis-je obtenir l '"identifiant" après avoir inséré ceci?
Réponses:
Utilisez
cursor.lastrowid
pour obtenir l'ID de la dernière ligne insérée sur l'objet curseur, ouconnection.insert_id()
pour obtenir l'ID de la dernière insertion sur cette connexion.la source
insert_id
reviendra?lastrowid
il disponible qu'après la validation de la transaction en cours?Aussi,
cursor.lastrowid
(une extension dbapi / PEP249 prise en charge par MySQLdb):cursor.lastrowid
est un peu moins cherconnection.insert_id()
et beaucoup moins cher qu'un autre aller-retour vers MySQL.la source
cursor.lastrowid
moins cher queconnection.insert_id()
?cursor.lastrowid
renvoyé quelque chose de différent deconnection.insert_id()
.cursor.lastrowid
a renvoyé le dernier identifiant d'insertion,connection.insert_id()
renvoyé0
. Comment est-ce possible?La spécification Python DBAPI définit également l'attribut 'lastrowid' pour l'objet curseur, donc ...
... devrait fonctionner aussi, et c'est évidemment basé sur la connexion.
la source
ou
la source
select last_insert_id()
partir de la CLI sur une machine LinuxCela pourrait être juste une exigence de PyMySql en Python, mais j'ai trouvé que je devais nommer la table exacte pour laquelle je voulais l'ID:
Dans:
Out: 5
... ou quelle que soit la valeur Batch_ID correcte
la source