2010-12-26 30 views
8

Theo this test, đặt PRAGMA đồng bộ = TẮT Sqlite có thể cải thiện đáng kể hiệu suất ghi Sqlite.Nơi đặt tùy chọn Sqlite PRAGMA trong dự án Django

Tôi biết rõ về những hạn chế, nhưng vẫn muốn thử điều này.

Vị trí tốt nhất trong dự án Django để đặt tùy chọn PRAGMA này là gì?

Tôi không thể làm điều đó từ settings.py - ít nhất không phải cách bài viết đề xuất - bởi vì from django.db import connection sẽ gây ra lỗi nhập đệ quy.

Trả lời

11

Thêm mã này trong file __init__.py của một trong những ứng dụng được cài đặt của bạn:

from django.db.backends.signals import connection_created 
def activate_foreign_keys(sender, connection, **kwargs): 
    """Enable integrity constraint with sqlite.""" 
    if connection.vendor == 'sqlite': 
     cursor = connection.cursor() 
     cursor.execute('PRAGMA foreign_keys = ON;') 

connection_created.connect(activate_foreign_keys) 
+0

giải pháp Nice and clean, sẽ cố gắng. Cảm ơn! –

+0

Mặc dù tôi đã xóa tệp DB của mình, xóa tất cả các lần di chuyển trước đó và tạo các di chuyển mới, điều này không tạo ra sự khác biệt nào đối với tôi. Các bảng không được tạo bằng "on delete cascade" như mong đợi. Tôi tự hỏi tại sao điều đó không xảy ra. –

0

Bài viết đề nghị bạn thêm nó làm phần mềm trung gian (ở cuối cùng). Phần mềm trung gian đó sau đó được cấu hình như một chuỗi bên trong settings.py, do đó bạn không nên nhận bất kỳ xung đột nhập nào.

Các vấn đề liên quan