विषय पर बढ़ें

प्रवास

डेटाबेस आरंभीकरण

कृपया ध्यान दें कि सभी उदाहरण मानते हैं कि आपके पास पहले से ही एक डेटाबेस है।

यदि यह मामला नहीं है और आपको टेबल बनाने की आवश्यकता है, तो यह बहुत सरल है क्योंकि ओमार अंतर्निहित टेबल बिल्ड के लिए स्क्वैल्केमी का उपयोग करता है।

आपको बस निम्नलिखित उदाहरण के रूप में \ _ all () कॉल करना है।

1
2
3
4
5
आयात sqlalchआयात करें
# अपने डेटाबेस url को sqlalchप्रारूप में प्राप्त करें - जैसा कि मॉडल परिभाषा में उपयोग किए जाने वाले डेटाबेस उदाहरण के साथ उपयोग किया जाता है
इंजन = sqlalcreate_engine ("sqlite: //test.db")
# ध्यान दें कि यह वही मेटाडेटा होना चाहिए जो ormar मॉडल परिभाषा में उपयोग किया जाता है
सभी बनाएँ (engine)

आप व्यक्तिगत तालिकाएँ भी बना सकते हैं, जो ormar.ormar \ _ config ऑब्जेक्ट में उजागर होती हैं।

1
2
3
4
5
आयात sqlalchआयात करें
# अपने डेटाबेस url को sqlalchप्रारूप में प्राप्त करें - जैसा कि मॉडल परिभाषा में उपयोग किए जाने वाले डेटाबेस उदाहरण के साथ उपयोग किया जाता है
इंजन = sqlalcreate_engine ("sqlite: //test.db")
# कलाकार पिछले उदाहरणों से एक नमूना है
कलाकार.मोर_कॉन्फिग टेबल.क्रिएट (इंजन)

!!!चेतावनी: आपको केवल एक बार तालिका बनाने की आवश्यकता है, इसलिए पायथन कंसोल का उपयोग करें या पहले उपयोग के बाद अपने उत्पादन कोड से स्क्रिप्ट को हटा दें।

डिस्टिलर का उपयोग

तालिकाओं के साथ, चूंकि हम स्क्वैल्केमी के आधार पर तालिकाओं को माइग्रेट कर रहे हैं, इसलिए एलेम्बिक का उपयोग करें।

आरंभीकरण

कमांड लाइन का उपयोग करके इस न्यूनतर उदाहरण को पुन: पेश करें।

1
2
3
एलेम्बिक इनिट एलेम्बिक
एलेम्बिक संशोधन - ऑटोजेनरेट-एम "कुछ बदलाव किए"
एलेम्बिक अपग्रेड हेड

उदाहरण env.py फ़ाइल

अभी भी प्रवास का एक सरल उदाहरण इसके समान होना चाहिए:

जब आपका एप्लिकेशन निम्नानुसार संरचित होता है:

1
2
3
4
5
-> ऐप
    -> एलेम्बिक (इनिशियलाइज्ड फोल्डर - इसलिए ऐप फोल्डर के अंदर एलेम्बिक इनिट एलेम्बिक चलाएं)
    -> मॉडल (here are the models)
      -> __ init__
      -> my_models.py

आपकी env.py फ़ाइल (एलेम्बिक फ़ोल्डर में) ऐसी दिख सकती है:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
logging.config आयात फ़ाइल Config से
स्क्वैल्केमी आयात से create_engine

एलेम्बिक आयात संदर्भ से
आयात sys, os

# ऐप फ़ोल्डर को सिस्टम पथ पर जोड़ें (वैकल्पिक इसे पायथन-एम के साथ मूल फ़ोल्डर से चला रहा है ...)
= os.name (os.path.abspath) (__file__))
Sys..(0, myPath + '/../')

# यह एलेम्बिक कॉन्फिग ऑब्जेक्ट है, जो प्रदान करता है
# उपयोग में .फ़ाइल के भीतर मानों तक पहुंच।
संदर्भ = config

# पायथन लॉगिंग के लिए कॉन्फ़िग फ़ाइल की व्याख्या करें।
# यह लाइन मूल रूप से लॉगर सेट करती है।
fieConfig (config. config _ फ़ाइल _ नाम)

# अपने नमूना के aऑब्जेक्ट को यहां जोड़ें (ormar में उपयोग किया जाने वाला)
#support for 'autogenerate'
.मेटाडेटा my_models से
लक्ष्य _ मेटाडेटा = मेटाडेटा


# यहां अपना url सेट करें या सेटिंग्स से आयात करें
# ध्यान दें कि डिफ़ॉल्ट रूप से url alic.फ़ाइल में सहेजे गए sqlachurl चर में है
= "स्क्लाइट: //test.db"


Drun_migrations_offline ():
    "" रन माइग्रेशन इन'ऑफलाइन 'मोड।

    यह संदर्भ को केवल एक के साथ कॉन्फ़िगर करता है
    और इंजन नहीं, हालांकि एक इंजन स्वीकार्य है
    यहाँ well.By इंजन निर्माण को छोड़ रहा है
    हमें उपलब्ध होने के लिए DBकी भी आवश्यकता नहीं है।

    के लिए कॉल करता है। () यहाँ दिए गए स्ट्रिंग का उत्सर्जन करता है
    स्क्रिप्ट आउटपुट।

    """
    संदर्भ .कॉन्फ़िगर (
        = URL,
        लक्ष्य _ मेटाडेटा = लक्ष्य _ मेटाडेटा,
        शाब्दिक बंधन = सच,
        बोली_ऑप्स ={"paramstyle": "named"},
        # यदि आप UUID फ़ील्ड सेट का उपयोग करते हैं तो यह परम भी है
        # उपसर्ग को एलेम्बिक में sqlalchआयात नाम से मेल खाना है
        # जिसे sqlalchemy_module_prefix विकल्प द्वारा सेट किया जा सकता है (default'sa. ')
        उपयोगकर्ता _ मॉड्यूल _ उपसर्ग = 'सा।'
    )

    संदर्भ के साथ। शुरू _ लेनदेन ():
        संदर्भ। रन _ माइग्रेशन ()


Drun_migrations_online ():
    "" रन माइग्रेशन इन'ऑनलाइन 'मोड।

    इस परिदृश्य में हमें एक इंजन बनाने की आवश्यकता है
    और संदर्भ के साथ एक संबंध जोड़ें।

    """
    कनेक्टेबल = क्रिएट _ इंजन (URL)

    कनेक्शन के रूप में। () कनेक्शन के साथ:
        संदर्भ .कॉन्फ़िगर (
            connection=connection
            लक्ष्य _ मेटाडेटा = लक्ष्य _ मेटाडेटा,
            # यदि आप UUID फ़ील्ड सेट का उपयोग करते हैं तो यह परम भी है
            # उपसर्ग को एलेम्बिक में sqlalchआयात नाम से मेल खाना है
            # जिसे sqlalchemy_module_prefix विकल्प द्वारा सेट किया जा सकता है (default'sa. ')
            उपयोगकर्ता _ मॉड्यूल _ उपसर्ग = 'सा।'
        )

        संदर्भ के साथ। शुरू _ लेनदेन ():
            संदर्भ। रन _ माइग्रेशन ()


यदि संदर्भ _ ऑफ़लाइन _ मोड () है:
    रन _ माइग्रेशन _ ऑफ़लाइन ()
अन्य:
    रन _ माइग्रेशन _ ऑनलाइन ()

बहिष्करण फॉर्म

आप .conमें दिए गए शामिल \ _ ऑब्जेक्ट तर्क का उपयोग करके विशिष्ट तालिकाओं को भी शामिल / बाहर कर सकते हैं। यह एक फ़ंक्शन होना चाहिए जो किसी दिए गए ऑब्जेक्ट के लिए सही / गलत लौटाता है।

उदाहरण फ़ंक्शन एक तालिका को बाहर करता है जिसका नाम डेटा \ _ से शुरू होता है, जब तक कि यह "डेटा \ _ नौकरियों" न हो:

1
2
3
4
5
Dमें _ ऑब्जेक्ट शामिल हैं (object, name, type_, प्रतिबिंबित, तुलना_to):
    यदि नाम और नाम ('data_') और नाम ['data_jobs'] में नहीं:
        गलत लौटें

    सच लौटाता है

!!!ध्यान दें कि \ _ ऑब्जेक्ट फ़ंक्शन तर्क शामिल हैं (आप नाम बदल सकते हैं) आवश्यक हैं और एलेम्बिक में परिभाषित किया गया है कि वे क्या करते हैं, एलेम्बिक प्रलेखन की जांच करें

फिर इसे संदर्भ में पास करें (online and offline):

1
2
3
4
5
6
7
8
संदर्भ .कॉन्फ़िगर (
        = URL,
        लक्ष्य _ मेटाडेटा = लक्ष्य _ मेटाडेटा,
        शाब्दिक बंधन = सच,
        बोली_ऑप्स ={"paramstyle": "named"},
        उपयोगकर्ता _ मॉड्यूल _ उपसर्ग = 'सा।',
        शामिल _ वस्तु = शामिल _ वस्तु
    )

!!!जानकारी आप SQL कीमिया तालिका निर्माण प्रलेखन में तालिका निर्माण, परिवर्तन और प्रवास के बारे में अधिक पढ़ सकते हैं।