224
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi thực hiện một phần chèn vào câu lệnh
cursor.execute["INSERT INTO mytable[height] VALUES[%s]",[height]]
Và tôi muốn có được khóa chính.
Bảng của tôi có 2 cột:
id primary, auto increment
height this is the other column.
Làm thế nào để tôi có được "id", sau khi tôi chỉ chèn cái này?
Martin Thoma
113K148 Huy hiệu vàng573 Huy hiệu bạc877 Huy hiệu đồng148 gold badges573 silver badges877 bronze badges
Đã hỏi ngày 30 tháng 3 năm 2010 lúc 20:33Mar 30, 2010 at 20:33
1
Sử dụng cursor.lastrowid
để nhận ID hàng cuối cùng được chèn trên đối tượng con trỏ hoặc connection.insert_id[]
để lấy ID từ lần chèn cuối cùng trên kết nối đó.
Đã trả lời ngày 30 tháng 3 năm 2010 lúc 20:37Mar 30, 2010 at 20:37
AmberamberAmber
489K81 Huy hiệu vàng617 Huy hiệu bạc545 Huy hiệu Đồng81 gold badges617 silver badges545 bronze badges
6
Ngoài ra, cursor.lastrowid
[tiện ích mở rộng DBAPI/PEP249 được MySQLDB hỗ trợ]:
>>> 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
rẻ hơn một chút so với connection.insert_id[]
và rẻ hơn nhiều so với một chuyến đi khứ hồi khác đến MySQL.
Warvariuc
54,8K36 Huy hiệu vàng167 Huy hiệu bạc225 Huy hiệu Đồng36 gold badges167 silver badges225 bronze badges
Đã trả lời ngày 24 tháng 9 năm 2010 lúc 19:59Sep 24, 2010 at 19:59
AndrewandrewAndrew
1.6752 Huy hiệu vàng13 Huy hiệu bạc7 Huy hiệu đồng2 gold badges13 silver badges7 bronze badges
8
Thông số kỹ thuật Python DBAPI cũng xác định thuộc tính 'lastrowid' cho đối tượng con trỏ, vì vậy ...
id = cursor.lastrowid
... cũng nên hoạt động, và nó dựa trên kết nối rõ ràng.
Đã trả lời ngày 3 tháng 1 năm 2011 lúc 0:45Jan 3, 2011 at 0:45
HtechnohtechnoHtechno
5.6014 Huy hiệu vàng25 Huy hiệu bạc37 Huy hiệu đồng4 gold badges25 silver badges37 bronze badges
0
SELECT @@IDENTITY AS 'Identity';
hoặc
SELECT last_insert_id[];
Đã trả lời ngày 30 tháng 3 năm 2010 lúc 20:39Mar 30, 2010 at 20:39
KeithkeithKeith
9246 Huy hiệu bạc13 Huy hiệu Đồng6 silver badges13 bronze badges
3
Đây có thể chỉ là một yêu cầu của PYMYSQL trong Python, nhưng tôi thấy rằng tôi phải đặt tên cho bảng chính xác mà tôi muốn ID cho:
In:
cnx = pymysql.connect[host='host',
database='db',
user='user',
password='pass']
cursor = cnx.cursor[]
update_batch = """insert into batch set type = "%s" , records = %i, started = NOW[]; """
second_query = [update_batch % [ "Batch 1", 22 ]]
cursor.execute[second_query]
cnx.commit[]
batch_id = cursor.execute['select last_insert_id[] from batch']
cursor.close[]
batch_id
Ra: 5 ... hoặc bất cứ giá trị Batch_id chính xác nào thực sự là
... or whatever the correct Batch_ID value actually is
Đã trả lời ngày 8 tháng 7 năm 2020 lúc 22:16Jul 8, 2020 at 22:16
EdwardedwardEdward
Huy hiệu bạc 11911 silver badge10 bronze badges
1