में डेटाबेस टेबल को बदलना मैं एक परियोजना के लिए Django का उपयोग करने पर विचार कर रहा हूं (fyi, एक ब्राउज़र-आधारित गेम) और सबसे अधिक सुविधाओं में से एक है जो syncdb
का उपयोग कर डेटाबेस टेबल स्वचालित रूप से बनाने के लिए है Django मॉडल के आधार पर मैं परिभाषित करता हूं (एक सुविधा जिसे मैं किसी अन्य ढांचे में नहीं ढूंढ सकता)। मैं पहले से ही सोच रहा था जब मैं documentation में यह देखा यह वास्तव में बहुत ही अच्छा था:Django
Syncdb मौजूदा टेबल
syncdb केवल मॉडल जो अभी तक स्थापित नहीं किया गया है के लिए टेबल पैदा करेगा परिवर्तन नहीं करेगा। इंस्टॉलेशन के बाद मॉडल क्लास में किए गए परिवर्तनों से मेल खाने के लिए यह कभी भी टेबल टेबल स्टेटमेंट जारी नहीं करेगा। मॉडल वर्गों और डेटाबेस स्कीमा में परिवर्तन अक्सर अस्पष्टता के कुछ रूपों को शामिल करते हैं और, उन मामलों में, Django को सही परिवर्तनों पर अनुमान लगाना होगा। एक जोखिम है कि प्रक्रिया में महत्वपूर्ण डेटा खो जाएगा।
यदि आपने किसी मॉडल में बदलाव किए हैं और डेटाबेस टेबल को मिलान करने के लिए बदलना चाहते हैं, तो नई SQL संरचना को प्रदर्शित करने के लिए sql कमांड का उपयोग करें और परिवर्तनों को पूरा करने के लिए अपनी मौजूदा तालिका स्कीमा से इसकी तुलना करें।
ऐसा लगता है कि मौजूदा तालिकाओं को बदलने से "हाथ से" किया जाना होगा।
जो मैं जानना चाहता हूं वह ऐसा करने का सबसे अच्छा तरीका है। दो समाधान दिमाग में आते हैं:
- जैसा कि दस्तावेज बताता है, डीबी में मैन्युअल रूप से परिवर्तन करें;
- डेटाबेस का बैकअप लें, इसे मिटाएं, फिर से टेबल बनाएं (सिंकडीबी के साथ, अब से यह स्क्रैच से टेबल बना रहा है) और बैक-अप डेटा आयात करें (डेटाबेस बड़ा होने पर यह बहुत लंबा लग सकता है)
कोई विचार?
django-evolution अच्छी तरह से काम करने लग रहा था, धन्यवाद! यह इंगित करने योग्य है कि किसी को शुरुआत से इसका उपयोग करना शुरू करना चाहिए (हालांकि यह मौजूदा एसक्यूएल से आवश्यक परिवर्तनों की गणना नहीं करता है)। – gatoatigrado