2008-08-21 16 views
10

के साथ स्वचालित डीबी स्कीमा परिवर्तन स्वचालित रूप से मैं भविष्य में डीबी-आधारित वेब ऐप्स के साथ ही PHP में लिखे गए कुछ ऐप्स के बंदरगाह के लिए पाइथन फ्रेमवर्क डीजेगो को देख रहा हूं। मेरे पिछले वर्षों के दौरान नास्टियर मुद्दों में से एक डेटाबेस स्कीमा परिवर्तनों का ट्रैक रख रहा था और इन परिवर्तनों को उत्पादक प्रणालियों में तैनात कर रहा था। मैंने उनको पूर्ववत करने में सक्षम होने की भी हिम्मत नहीं की है, लेकिन निश्चित रूप से परीक्षण और डिबगिंग के लिए यह एक शानदार विशेषता होगी। यहां अन्य प्रश्नों से (जैसे this one या this one), मैं देख सकता हूं कि मैं अकेला नहीं हूं और यह एक छोटी सी समस्या नहीं है। इसके अलावा, मुझे वहां जवाबों में कई प्रेरणा मिलीं।संस्करण ट्रैक, django

अब, जैसा कि Django बहुत शक्तिशाली प्रतीत होता है, क्या इसमें उपरोक्त के साथ मदद करने के लिए कोई उपकरण है? शायद यह उनके दस्तावेज़ों में भी है और मुझे याद आया?

उत्तर

12

डीबी स्कीमा माइग्रेशन, South और Django Evolution को संभालने के लिए कम से कम दो तृतीय पक्ष सुविधाएं हैं। मैंने किसी एक की कोशिश नहीं की है, लेकिन मैंने दक्षिण के बारे में कुछ अच्छी बातें सुनी हैं, हालांकि विकास थोड़ी देर के आसपास रहा है।

इसके अलावा, Django विकी पर SchemaEvolution देखें। यह डीबी माइग्रेट करने के बारे में सिर्फ एक विकी पेज है।

+0

डीजेगो इवोल्यूशन के साथ खेलने के बाद दक्षिण सबसे अच्छी तारीख प्रतीत होता है, मुझे लगता है कि दक्षिण का डेटा माइग्रेशन हत्यारा सुविधा है। मुझे नहीं लगता कि Django Evolution के पास डेटा माइग्रेशन अभी तक है। केवल स्कीमा एवल्यूशन – Rasiel

2

पिछली बार मैंने जाँच की (संस्करण 0.97), syncdb, अपने models.py फ़ाइल के साथ अपने DB स्कीमा सिंक करने के लिए टेबल को जोड़ने के लिए सक्षम हो जाएगा, लेकिन यह नहीं कर सकते हैं:

  • नाम बदलें या एक आबादी वाले पर एक स्तंभ जोड़ने डीबी। आपको हाथ से ऐसा करने की ज़रूरत है।
  • अपने मॉडल को दोबारा विभाजित करें (जैसे तालिका को दो में विभाजित करें) और तदनुसार अपने डीबी को दोबारा दोहराएं।

हालांकि यह दो अलग अलग managers के साथ खेल से पलायन करने के लिए एक Django स्क्रिप्ट लिखने के लिए संभव हो सकता है, लेकिन है कि उम्र का समय लग सकता है, तो अपने डीबी बड़ी है।

0

और अब dmigrations भी है। announcement से:

Django विकास इस समस्या को चालाक रास्ता पता करने के लिए, मॉडल में परिवर्तन है कि अभी तक डेटाबेस स्कीमा में नहीं दिखते का पता लगाने और क्या दो सिंक में वापस लाने के लिए किया जाना चाहिए पता लगाना द्वारा प्रयास करता है । इसके विपरीत, dmigrations बेवकूफ दृष्टिकोण लेता है: यह आपको माइग्रेशन के अनुक्रम में परिवर्तनों को स्पष्ट रूप से बताने की आवश्यकता है, जो अंतर्निहित मॉडल को प्रतिबिंबित करने वाले नवीनतम राज्य तक डेटाबेस लाने के लिए लागू किया जाएगा।

इसका मतलब है कि माइग्रेशन बनाने वाले डेवलपर्स के लिए अतिरिक्त काम, लेकिन यह पूरी प्रक्रिया को पूरी तरह पारदर्शी बनाता है-हमारी परियोजनाओं के लिए, हमने सबसे सरल प्रणाली के साथ जाने का फैसला किया जो संभवतः काम कर सकता है।

(मेरे बोल्ड)

0

मैं अच्छा के बारे में Django Schema Evolution Branch की बहुत सुना और उन वास्तविक उपयोगकर्ताओं की opions थे। यह बॉक्स के बाहर काम करता है और इसे करना चाहिए।

0

यू को Dmigrations देखना चाहिए, यह django-eveoltions से थोड़ा अलग है। यह आपको वह सब कुछ दिखाता है जो यह कर रहा है और जटिल चीजों के लिए यह आपको अपने हस्तक्षेप के लिए पूछता है। यह बहुत अच्छा होना चाहिए।

1

हाल ही में DjangoCon में डीबी स्कीमा परिवर्तनों पर एक पैनल सत्र था; video of the session (Google के लिए धन्यवाद) है, जो इन उपयोगिताओं में से कुछ पर कुछ उपयोगी जानकारी प्रदान करनी चाहिए।

+0

अच्छा सत्र। मुझे लगता है कि मैंने django विकास के साथ चिपकने में अपना मन बना लिया। – Farinha

संबंधित मुद्दे