2015-07-03 7 views
5

मैं भबका उपयोग कर रहा हूँ एक डेटाबेस के लिए माइग्रेशन का प्रबंधन करने के द्वारा डेटाबेस तालिकाओं की अनदेखी करने के। एक ही डेटाबेस का उपयोग एकाधिक पायथन पैकेज द्वारा किया जाता है और उनमें से प्रत्येक का अपना माइग्रेशन पथ होता है।भबका: जब माइग्रेशन autogenerating कैसे अन्य उत्पादों

मैं कैसे भबका बता सकते हैं जब स्वचालित माइग्रेशन पैदा अन्य पैकेजों से तालिकाओं की अनदेखी करने के? उदाहरण के लिए जब मैं चलाएँ:

def upgrade(): 
    ### commands auto generated by Alembic - please adjust! ### 
    op.drop_table('table_from_another_package`) 

मैं मैन्युअल प्रवास फ़ाइल को संपादित और drop_table() निकाल सकते हैं:

alembic -c development.ini revision --autogenerate -m "Initial migration" 

मेरे प्रवास अजगर फ़ाइल अन्य पैकेज के लिए ड्रॉप तालिकाओं (वर्तमान भबका env.py में नहीं) शामिल हैं और create_table() प्रविष्टियां, लेकिन यह मैन्युअल त्रुटि प्रवण कार्य है। मैं उन्हें पहले स्थान पर उत्पन्न करने से बचाना चाहता हूं।

+0

अच्छा सवाल, हालांकि संभवत: एक से अधिक उत्पादों को एक ही डेटाबेस तक पहुंचने के लिए इतना अच्छा डिज़ाइन नहीं है। क्या आप कम से कम विभिन्न स्कीमा का उपयोग करते हैं? या कुछ नामकरण सम्मेलन? मुझे नहीं लगता कि यह बॉक्स से बाहर समर्थित है, लेकिन अगर मुझे इसे काम करने की ज़रूरत है, तो शायद मैं उस कोड को देखता हूं जो डेटाबेस को प्रतिबिंबित कर रहा है (या तो 'मेटाडाटा' या 'इंजन') और इसे ओवरराइट करने का एक तरीका ढूंढें ताकि यह * मेरी टेबल * को फ़िल्टर न करे। – van

उत्तर

5

ऑटोजेनरेट पर विचार करने वाले ऑब्जेक्ट्स पर पूर्ण नियंत्रण here है।

यदि आप इस तरह से स्वत: उत्पन्न करने की कोशिश कर रहे हैं कि यह एक समय में केवल व्यक्तिगत मेटाडेटा ऑब्जेक्ट्स को मानता है तो आप शायद अपनी env.py फ़ाइल में अनुकूलन जोड़ना चाहते हैं जो "X" argument का लाभ उठाता है। इस उप-घटक को प्राप्त करने के लिए इस तर्क का प्रयोग करें कि आप किस उप-घटक पर काम करना चाहते हैं, और उस उप-घटक से संबंधित वस्तुओं को देखने के लिए अपने include_object फ़ंक्शन के भीतर परामर्श लें।

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