INSERT INTOステートメントを実行します
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
そして主キーを取得したいです。
私のテーブルには2つの列があります。
id primary, auto increment
height this is the other column.
これを挿入した後、「id」を取得するにはどうすればよいですか?
cursor.lastrowid
を使用してカーソルオブジェクトに挿入された最後の行IDを取得するか、connection.insert_id()
を使用してその接続の最後の挿入からIDを取得します。
また、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への別の往復よりもはるかに安いです。
Python DBAPI仕様では、カーソルオブジェクトの「lastrowid」属性も定義されているため、...
id = cursor.lastrowid
...これも機能するはずです。また、明らかに接続ごとです。
SELECT @@IDENTITY AS 'Identity';
または
SELECT last_insert_id();