Theo dõi phiên bản, tự động thay đổi lược đồ DB với django


10

Tôi hiện đang xem xét khung công tác Python Django cho các ứng dụng web dựa trên nền tảng db trong tương lai cũng như một cổng của một số ứng dụng hiện được viết bằng PHP. Một trong những vấn đề nan giải trong những năm cuối của tôi là theo dõi các thay đổi lược đồ cơ sở dữ liệu và triển khai những thay đổi này cho các hệ thống sản xuất. Tôi đã không dám yêu cầu để có thể hoàn tác chúng quá, nhưng tất nhiên để thử nghiệm và gỡ lỗi đó sẽ là một tính năng tuyệt vời. Từ các câu hỏi khác ở đây (chẳng hạn như this one hoặc this one), tôi có thể thấy rằng tôi không đơn độc và đây không phải là vấn đề tầm thường. Ngoài ra, tôi tìm thấy nhiều nguồn cảm hứng trong câu trả lời ở đó.

Hiện tại, như Django có vẻ rất mạnh mẽ, nó có bất kỳ công cụ nào để trợ giúp với những điều trên không? Có lẽ ngay cả trong tài liệu của họ và tôi đã bỏ lỡ nó?

12

Có ít nhất hai tiện ích của bên thứ ba để xử lý di chuyển giản đồ DB, SouthDjango Evolution. Tôi đã không thử một trong hai, nhưng tôi đã nghe một số điều tốt về Nam, mặc dù Evolution đã được khoảng một chút nữa.

Ngoài ra, hãy xem SchemaEvolution trên wiki Django. Nó chỉ là một trang wiki về việc di chuyển db.

  0

Nam dường như là ngày tốt nhất, sau khi chơi xung quanh với Django Evolution, tôi nghĩ rằng di chuyển dữ liệu của Nam là tính năng sát thủ. Tôi không nghĩ Django Evolution có Data Migration. chỉ Schema Evelution 18 jun. 092009-06-18 02:59:31


2

Thời gian qua tôi đã kiểm tra (phiên bản 0,97), syncdb sẽ có thể thêm bảng để đồng bộ hóa schema DB của bạn với tập tin models.py của bạn, nhưng nó không có thể:

  • Rename hoặc thêm một cột vào một dân cư DB. Bạn cần phải làm điều đó bằng tay.
  • Tái cấu trúc mô hình của bạn (như chia bảng thành hai) và kết hợp lại DB của bạn cho phù hợp.

Có thể có thể viết kịch bản Django để thực hiện di chuyển bằng cách chơi với hai khác nhau managers, nhưng có thể mất nhiều thời gian nếu DB của bạn lớn.


0

Và bây giờ cũng có dmigrations. Từ announcement:

django-tiến hóa nỗ lực để giải quyết vấn đề này một cách thông minh, bằng cách phát hiện những thay đổi các mô hình mà chưa được phản ánh trong lược đồ cơ sở dữ liệu và tìm ra những gì cần phải được thực hiện để mang lại hai trở lại đồng bộ . Ngược lại, dmigrations sử dụng cách tiếp cận ngu xuẩn: nó yêu cầu bạn nêu rõ các thay đổi trong một chuỗi di chuyển, sẽ được áp dụng lần lượt để đưa cơ sở dữ liệu đến trạng thái gần đây nhất phản ánh các mô hình cơ bản.

Điều này có nghĩa là làm việc thêm cho các nhà phát triển tạo ra di chuyển, nhưng nó cũng làm cho toàn bộ quá trình hoàn toàn minh bạch - cho các dự án của chúng tôi, chúng tôi quyết định đi với hệ thống đơn giản nhất có thể hoạt động.

(My đậm)


0

tôi nghe rất nhiều về tốt Django Schema Evolution Branch và đó là những opions của người sử dụng thực tế. Nó hầu hết hoạt động ra khỏi hộp và làm những gì cần làm.


0

U nên tra cứu Dmigrations, nó hoạt động hơi khác một chút so với django-eveoltions. Nó cho bạn thấy tất cả mọi thứ nó đang làm và cho những điều phức tạp nó yêu cầu bạn cho intervetnions của bạn. Nó sẽ rất tuyệt vời.


1

Đã có phiên bảng điều khiển về thay đổi lược đồ DB tại DjangoCon gần đây; có một số video of the session (nhờ Google), sẽ cung cấp một số thông tin hữu ích về một số tiện ích này.

  0

Phiên làm việc tốt. Tôi đoán tôi đã quyết định gắn bó với sự tiến hóa của django. 03 oct. 082008-10-03 17:15:23