问题:使用Python插入MySQL数据库后,如何获得“ id”?
我执行INSERT INTO语句
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
我想获取主键。
我的表有2列:
id primary, auto increment
height this is the other column.
我刚插入这个后,如何获得“ id”?
回答 0
使用cursor.lastrowid
得到插入光标对象的最后一行ID,或者connection.insert_id()
从该连接上最后插入获取的ID。
回答 1
另外,cursor.lastrowid
(MySQLdb支持的dbapi / PEP249扩展名):
>>> 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往返便宜,而且便宜很多。
回答 2
Python DBAPI规范还为光标对象定义了“ lastrowid”属性,因此…
id = cursor.lastrowid
…也应该起作用,并且显然基于每个连接。
回答 3
SELECT @@IDENTITY AS 'Identity';
要么
SELECT last_insert_id();