J'exécute une instruction INSERT INTO
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
et je veux obtenir la clé primaire.
Ma table a 2 colonnes:
id primary, auto increment
height this is the other column.
Comment puis-je obtenir le "id", après que je viens de l'insérer?
Utilisez cursor.lastrowid
Pour obtenir le dernier identifiant de ligne inséré dans l'objet curseur ou connection.insert_id()
pour obtenir l'identifiant du dernier insert de cette connexion.
Aussi, cursor.lastrowid
(Une extension dbapi/PEP249 supportée par 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
Est un peu moins cher que connection.insert_id()
et beaucoup moins cher qu'un autre aller-retour vers MySQL.
Les spécifications DBAPI Python définissent également l'attribut 'lastrowid' pour l'objet curseur, donc ...
id = cursor.lastrowid
... devrait fonctionner aussi, et c'est évidemment connexion par connexion.
SELECT @@IDENTITY AS 'Identity';
ou
SELECT last_insert_id();