Làm việc với cơ sở dữ liệu trong Django
Các cơ sở dữ liệu được Django hỗ trợ:
Trong Django hỗ trợ các database chính là: PostgreSQL, MySQL, Oracle, SQLite, MariaDB. Ngoài ra còn có một số phụ trợ cơ sở dữ liệu được cung cấp bởi các bên thứ ba. Django cố gắng hỗ trợ nhiều tính năng nhất có thể trên tất cả các phần phụ trợ của cơ sở dữ liệu. Tuy nhiên, không phải tất cả các phần mềm phụ trợ cơ sở dữ liệu đều giống nhau.
Kết nối cơ sở dữ liệu trong Django:
Các kết nối liên tục:
Các kết nối liên tục tránh được chi phí thiết lập lại kết nối với cơ sở dữ liệu trong mỗi yêu cầu. Các kết nối được kiểm soát bởi CONN_MAX_AGE
- đây là tham số xác định thời gian tồn tại tối đa của kết nối và nó có thể được thiết lập độc lập cho mỗi cơ sở dữ liệu. Giá trị mặc định cho CONN_MAX_AGE
bằng 0 do đó để kích hoạt kết nối liên tục thì hãy đặt giá trị CONN_MAX_AGE
thành một số nguyên dương, và cuối cùng khi muốn các kết nối liên tục thì chọn chế độ none
.
Quản lý kết nối:
Tại Django sẽ mở một kết nối đến cơ sở dữ liệu ngay lần đầu tiên nó thực hiện một truy vấn cơ sở dữ liệu. Nó giữ cho kết nối này mở và sử dụng lại kết nối này trong các yêu cầu tiếp theo. Django đóng kết nối khi nó vượt quá giá trị tối đa của tham số CONN_MAX_AGE
hoặc khi nó không thể sử dụng được nữa.
Cụ thể, Django tự động mở kết nối bất cứ khi nào nó cần nếu như chưa có sẵn kết nối đến cơ sở dữ liệu. Khi bắt đầu mỗi yêu cầu, Django sẽ đóng kết nối nếu kết nối đó đã vượt qua giá trị của CONN_MAX_AGE
. Bên cạnh đó thì chúng ta sẽ có sự cố với các trang web có lưu lượng truy cập thấp nếu cơ sở dữ liệu ngắt các kết nối không hoạt động sau một thời gian. Nếu như vậy thì Django sẽ cố gắng sử dụng các kết nối đã bị máy chủ của cơ sở dữ liệu ngắt kết nối vì lúc đó giá trị của chúng ta chưa vượt qua CONN_MAX_AGE
. Vì vậy, nên đặt CONN_MAX_AGE
có giá trị thấp hơn, vừa phải để không gây ra lỗi.
Vào cuối mỗi yêu cầu, Django đóng kết nối nếu nó đã đạt đến giá trị tối đa hoặc nếu nó ở trạng thái lỗi không thể khôi phục. Nếu bất kỳ lỗi cơ sở dữ liệu nào đã xảy ra trong khi xử lý các yêu cầu, Django sẽ kiểm tra xem kết nối có còn hoạt động hay không và đóng nó nếu cơ sở dữ liệu không còn hoạt động. Ngoài ra, cài đặt CONN_HEALTH_CHECKS
thành True
có thể được sử dụng để cải thiện độ mạnh mẽ của việc tái sử dụng kết nối và ngăn ngừa lỗi khi máy chủ cơ sở dữ liệu đã đóng kết nối.
Một số chú ý về cơ sở dữ liệu:
Mã hóa cơ sở dữ liệu:
Trong Django giả định rằng tất cả cơ sở dữ liệu đều sử dụng mã hóa UTF-8. Việc sử dụng các mã hóa khác có thể dẫn đến hành vi không mong muốn, chẳng hạn như lỗi "giá trị quá dài" từ cơ sở dữ liệu của bạn không đúng với dữ liệu hợp lệ trong Django.
Nguồn: django tutorial