tôi có mã này:Làm cách nào để kiểm tra xem chèn đã thành công với MySQLdb bằng Python?
cursor = conn.cursor()
cursor.execute(("insert into new_files (videos_id, filename, "
"is_processing) values (%s,%s,1)"), (id, filename))
logging.warn("%d", cursor.rowcount)
if (cursor.rowcount == 1):
logging.info("inserted values %d, %s", id, filename)
else:
logging.warn("failed to insert values %d, %s", id, filename)
cursor.close()
Fun như nó có, cursor.rowcount
là luôn một, mặc dù tôi cập nhật cơ sở dữ liệu của tôi để làm cho videos_id một khóa duy nhất. Đó là, chèn không thành công bởi vì trong các thử nghiệm của tôi giống nhau videos_id
sẽ xuất hiện (và khi tôi kiểm tra cơ sở dữ liệu, không có gì được chèn vào). Nhưng vì lý do gì, các rowcount
luôn là 1 - ngay cả những logging.warn
Tôi có spits ra một rowcount
của 1.
Vì vậy, câu hỏi:
Tôi có thể sử dụng để làm việc rowcount
ra nếu một chèn diễn ra tốt đẹp? Nếu vậy, tôi (có lẽ) đang làm gì sai? nếu không, làm cách nào để kiểm tra xem có chèn không?
Bạn là nhà vô địch, cảm ơn – bharal
Câu hỏi. Điều gì xảy ra nếu bạn chèn 500 bản ghi tại một thời điểm trước khi cam kết (hoặc bởi một truy vấn dài hoặc nhiều phần chèn rời)? tức là tôi chỉ cam kết mỗi 500 hồ sơ; nếu một trong những bản ghi đó không thành công thì làm cách nào để tôi in chỉ một bản ghi đó và tiếp tục chèn các bản ghi khác. – gunslingor
@ user3656612 nó phụ thuộc vào lý do tại sao chúng không thành công. Nếu vấn đề là phá vỡ một số ràng buộc, bạn có thể sử dụng INSERT IGNORE hoặc INSERT ... ON UPDATE DUPLICATE KEY. Nếu đó là lỗi kết nối, bạn không thể làm gì cả. Nếu đó là lỗi cú pháp - bạn nên xem xét sửa lỗi trong ứng dụng của mình. – newtover