Saya menjalankan pernyataan INSERT INTO
cursor.execute("INSERT INTO mytable(height) VALUES(%s)",(height))
dan saya ingin mendapatkan kunci utama.
Meja saya memiliki 2 kolom:
id primary, auto increment
height this is the other column.
Bagaimana saya mendapatkan "id", setelah saya baru saja memasukkan ini?
Jawaban:
Gunakan
cursor.lastrowid
untuk memasukkan ID baris terakhir pada objek kursor, atauconnection.insert_id()
untuk mendapatkan ID dari insert terakhir pada koneksi itu.sumber
insert_id
kembali?lastrowid
hanya tersedia setelah transaksi saat ini dilakukan?Juga,
cursor.lastrowid
(ekstensi dbapi / PEP249 didukung oleh MySQLdb):cursor.lastrowid
agak lebih murah daripadaconnection.insert_id()
dan jauh lebih murah daripada pulang pergi ke MySQL.sumber
cursor.lastrowid
lebih murah dari ituconnection.insert_id()
?cursor.lastrowid
mengembalikan sesuatu yang berbeda dariconnection.insert_id()
.cursor.lastrowid
mengembalikan id sisipan terakhir,connection.insert_id()
dikembalikan0
. Bagaimana itu bisa terjadi?Python DBAPI spec juga mendefinisikan atribut 'lastrowid' untuk objek kursor, jadi ...
... harus bekerja juga, dan itu berdasarkan koneksi per jelas.
sumber
atau
sumber
select last_insert_id()
dari CLI pada mesin LinuxIni mungkin hanya persyaratan PyMySql dengan Python, tetapi saya menemukan bahwa saya harus memberi nama tabel yang tepat yang saya inginkan untuk ID:
Di:
Keluar: 5
... atau apa pun nilai Batch_ID yang benar sebenarnya
sumber