Tôi phải chèn hơn 8000 bản ghi vào cơ sở dữ liệu SQLite bằng cách sử dụng ORM của Django. Hoạt động này cần phải được chạy như một cronjob khoảng một lần mỗi phút.
Hiện tại tôi đang sử dụng vòng lặp for để lặp qua tất cả các mục và sau đó chèn từng mục một.
Ví dụ:Cách hiệu quả để chèn hàng nghìn bản ghi vào bảng SQLite bằng Django là gì?
for item in items:
entry = Entry(a1=item.a1, a2=item.a2)
entry.save()
một cách hiệu quả để làm điều này là gì?
Chỉnh sửa: So sánh một chút giữa hai phương pháp chèn.
Without commit_manually trang trí (11.245 hồ sơ):
[email protected] marinetraffic]$ time python manage.py insrec
real 1m50.288s
user 0m6.710s
sys 0m23.445s
Sử dụng trang trí commit_manually (11.245 hồ sơ):
[[email protected] marinetraffic]$ time python manage.py insrec
real 0m18.464s
user 0m5.433s
sys 0m10.163s
Lưu ý: Các kiểm tra kịch bản cũng thực hiện một số hoạt động khác ngoài chèn vào cơ sở dữ liệu (tải xuống tệp ZIP, trích xuất tệp XML từ lưu trữ ZIP, phân tích cú pháp tệp XML) để thời gian cần thiết để thực thi không cần thiết rily đại diện cho thời gian cần thiết để chèn các bản ghi.
Thao tác này sẽ khởi tạo tất cả dưới dạng mô hình và chạy hàng nghìn lần chèn riêng lẻ. Tôi đã luôn luôn phải thả xuống SQL và thực hiện chèn hàng loạt thủ công cho loại ổ đĩa này; Django không được xây dựng cho nó. Nhưng có, bạn chắc chắn muốn một giao dịch duy nhất nếu bạn đang làm theo cách này. –
Tôi không biết ORM Django tốt, nhưng không phải ORM chỉ tạo SQL cho bạn? Và trong một mô hình đơn giản không có khóa ngoài, không một cá thể đơn nào dịch sang một câu lệnh chèn đơn? – monkut
Xin chào, bạn có thể vui lòng xây dựng cùng một điều khoản về .net? Nó sẽ là một trợ giúp lớn, vì tôi đang đối mặt với cùng một tình huống –