विषय पर बढ़ें

पाइडेंटिक 2. XX के आधार पर 0.20.0 में पलायन करना

संस्करण 0.20.0 v2 के लिए समर्थन प्रदान करता है। XX, डेवलपर्स को महत्वपूर्ण गति सुधार (सत्यापन और क्रमबद्धता रस्ट में लिखी गई है) और क्लीनर एपीआई प्रदान करता है, जबकि यह dv.1 के लिए समर्थन छोड़ देता है। XX के समर्थन ormar में इंटरफ़ेस में परिवर्तन हैं जो dमें किए गए परिवर्तनों के अनुरूप हैं।

बड़े बदलाव

संस्करण में माइग्रेट करना> = 0.20.0 ठीक से काम करने के लिए कई परिवर्तनों की आवश्यकता होती है।

उमर, नमूना विन्यास

अब, प्रत्येक ormar नमूना को एक ormar \ _ config पैरामीटर की आवश्यकता होती है, जो मेटा वर्ग को परिभाषित करने के बजाय marConfig वर्ग का एक उदाहरण है। ध्यान दें कि संपत्ति का नाम ormar \ _ config होना चाहिए और config वर्ग का एक उदाहरण होना चाहिए।

 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
आयात डेटाबेस
आयात करें
आयात sqlalchआयात करें

डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //db.sqlite")
मेटाडेटा = वर्गधर्मी। मेटाडेटा ()

# ओमार <0.20
कक्षा अल्बूm (ormar. Model):
    कक्षा मेटा:
        डेटाबेस = डेटाबेस
        मेटाडेटा = मेटाडेटा
        टेबलनाम = "एल्बम"


    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    पसंदीदा: बूल = ormar। बूलियन (default = False)

# ormar> = 0.20
कक्षा एल्बम V20 (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस,
        मेटाडेटा = मेटाडेटा,
        टेबलनाम = "एल्बम_वी 20"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    पसंदीदा: बूल = ormar। बूलियन (default = False)

marConfig api / पैरामीटर

Mmar \ _ config मेटा वर्ग द्वारा प्रदान की गई सेटिंग्स के समान सेट को उजागर करता है। यह माध्य है कि आप निम्न मापदंडों में से किसी के साथ कॉन्फ़िगरेशन को आरंभ कर सकते हैं:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
मेटाडेटा: वैकल्पिक [वर्गधर्मी। मेटाडेटा]
डेटाबेस: वैकल्पिक [डेटाबेस। डेटाबेस]
इंजन: वैकल्पिक [sqlalchemy.engine। इंजन]
टेबलनाम: वैकल्पिक [str]
order_by: वैकल्पिक [सूची [str]]
सार: बूल
_ माता-पिता _ फ़ील्ड्स को बाहर करें: वैकल्पिक [सूची [str]]
queryset_class: टाइप करें [QuerySet]
अतिरिक्त: अतिरिक्त
बाधाएं: वैकल्पिक ColumnCollectionConstraint

बेसमेटा समकक्ष - सर्वश्रेष्ठ अभ्यास

कृपया ध्यान दें कि कोड दोहराव को कम करने और विकास को सरल बनाने के क्रमबद्ध करना में, अभी भी एक बुनियादी कॉन्फ़िगरेशन बनाने और प्रत्येक नमूना की एक प्रति प्रदान करने की सिफारिश की जाती है। marConfig इसके लिए एक सुविधाजनक प्रतिकृति विधि प्रदान करता है।

प्रतिलिपि विधि marConfig init के समान तर्क लेती है, इसलिए आप आवश्यकतानुसार ओवरराइड कर सकते हैं, लेकिन डिफ़ॉल्ट रूप से यह मौजूदा गुणों को वापस कर देगा, टेबलनाम, क्रमबद्ध करना \ _ द्वारा, और बाधाओं को छोड़कर जो डिफ़ॉल्ट रूप से साफ़ किए जाते हैं।

 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
आयात डेटाबेस
आयात करें
आयात sqlalchआयात करें

base_ormar_config = ormar। marConfig (
    डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //db.sqlite"),
    मेटाडेटा = वर्गधर्मी। मेटाडेटा ()
)

कक्षा एल्बम V20 (ormar. Model):
    ormar _ config = आधार _ ormar _ config कॉपी (
        टेबलनाम = "एल्बम_वी 20"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)


क्लास ट्रैक V20 (ormar. Model):
    ormar _ config = आधार _ ormar _ config कॉपी (
        टेबलनाम = "ट्रैक_वी 20"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)

विकल्प फ़ील्ड पैरामीटर अब समर्थित नहीं हैं।

संस्करण 0.20 से पहले, आप स्वीकार्य मूल्यों को प्रतिबंधित करने के लिए किसी भी मौजूदा ormar फ़ील्ड को विकल्प तर्क प्रदान कर सकते हैं। यह सुविधा हटा दी गई है और आपको ormar का उपयोग करना चाहिए। इस उद्देश्य के लिए डिज़ाइन किया गया Enum फ़ील्ड। यदि आप डेटाबेस फ़ील्ड प्रकारों (यानी पूर्णांक फ़ील्ड) को संरक्षित करना चाहते हैं, तो आप हमेशा एक कस्टम सत्यापनकर्ता लिख सकते हैं।

 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
आयात डेटाबेस
आयात करें
आयात sqlalchआयात करें

डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //db.sqlite")
मेटाडेटा = वर्गधर्मी। मेटाडेटा ()

# ओमार <0.20
कक्षा कलाकार (ormar. Model):
    कक्षा मेटा:
        डेटाबेस = डेटाबेस
        मेटाडेटा = मेटाडेटा


    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    देश: str = ormar। स्ट्रिंग (डिफ़ॉल्ट = गलत, अधिकतम_लंबाई = 50, विकल्प = ["यूके", "यूएस", "वियतनाम", "कोलंबिया"])

# ormar> = 0.20
enum से Enum आयात

कक्षा देश (str, Enum):
    यूके = "यूके"
    यूएस = "यूएस"
    VIETNAM = "वियतनाम"
    कोलंबिया = "कोलंबिया"

कक्षा कलाकार V20 (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस,
        मेटाडेटा = मेटाडेटा,
        टेबलनाम = "कलाकार_वी 20"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    देश: देश = ormar। Enum (enum_class = Country)

d\ _ केवल अब फ़ील्ड मापदंडों का समर्थन नहीं करता है

pyd\ _ केवल फ़ील्ड को v 0.20 में पदावनत और हटा दिया गया है। mar pydफ़ील्ड को सामान्य pydमॉडल की तरह परिभाषित करने की अनुमति देता है।

 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
आयात डेटाबेस
आयात करें
आयात sqlalchआयात करें

डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //db.sqlite")
मेटाडेटा = वर्गधर्मी। मेटाडेटा ()

# ओमार <0.20
क्लास डिश (ormar. Model):
    कक्षा मेटा:
        डेटाबेस = डेटाबेस
        मेटाडेटा = मेटाडेटा
        टेबलनाम = "व्यंजन"


    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    कुक: str = ormar। स्ट्रिंग (max_length = 40, pydantic_only = True, डिफ़ॉल्ट = "sam")

# ormar> = 0.20
कक्षा DishV20 (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस,
        मेटाडेटा = मेटाडेटा,
        टेबलनाम = "व्यंजन_v20"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    कुक: str = "sam" # यह सामान्य पाइडेंटिक क्षेत्र है

अब संपत्ति \ _ क्षेत्र सज्जाकार का समर्थन नहीं करता है

संपत्ति \ _ क्षेत्र डेकोरेटर का उपयोग शब्दकोश / क्रमबद्ध JSप्रतिनिधित्व में निहित गणना किए गए फ़ील्ड को पास करने का एक तरीका प्रदान करने के लिए किया जाता नमूना है। d2. X संस्करण ने इस संभावना को पेश किया, इसलिए अब आपको dमूल संस्करण पर स्विच करना चाहिए।

 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
आयात डेटाबेस
आयात करें
आयात sqlalchआयात करें
पाइडेंटिक आयात करें

डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //db.sqlite")
मेटाडेटा = वर्गधर्मी। मेटाडेटा ()

# ओमार <0.20
कक्षा कर्मचारी (ormar. Model):
    कक्षा मेटा:
        डेटाबेस = डेटाबेस
        मेटाडेटा = मेटाडेटा


    आईडी: int = ormar। पूर्णांक (primary_key = True)
    पहला_नाम: str = ormar। स्ट्रिंग (max_length = 100)
    last_name: str = ormar। स्ट्रिंग (max_length = 100)

    @ Ormar.property_field ()
    defull_name (self) -> str:
        रिटर्न एफ "{self.first_name}{self.last_name}"

# ormar> = 0.20
कक्षा कर्मचारी V20 (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस,
        मेटाडेटा = मेटाडेटा,
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    पहला_नाम: str = ormar। स्ट्रिंग (max_length = 100)
    last_name: str = ormar। स्ट्रिंग (max_length = 100)

    @Pydantic computed_field ()
    defull_name (self) -> str:
        रिटर्न एफ "{self.first_name}{self.last_name}"

पदावनत विधि

नीचे सूचीबद्ध सभी तरीकों को हटा दिया गया है और इसे ओरमार के संस्करण 0.30 में हटा दिया जाएगा।

t () नमूना हो जाता है \ _ डंप ()

 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
आयात डेटाबेस
आयात करें
आयात sqlalchआयात करें

डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //db.sqlite")
मेटाडेटा = वर्गधर्मी। मेटाडेटा ()

कक्षा अल्बूm (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस,
        मेटाडेटा = मेटाडेटा,
        टेबलनाम = "एल्बम"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    पसंदीदा: बूल = ormar। बूलियन (default = False)

एल्बम = एल्बम (नाम = "डार्क साइड ऑफ द मून")

# ओमार <0.20
एल्बम_डिक्ट = एल्बम। ()

# ormar> = 0.20
नया_एल्बम_डिक्ट = एल्बम.मॉडल_डंप ()

कृपया ध्यान दें कि पैरामीटर समान हैं, अर्थात् शामिल करें, बाहर करें, आदि।

JS() नमूना हो जाता है \ _ डंप \ _ json ()

 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
आयात डेटाबेस
आयात करें
आयात sqlalchआयात करें

डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //db.sqlite")
मेटाडेटा = वर्गधर्मी। मेटाडेटा ()

कक्षा अल्बूm (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस,
        मेटाडेटा = मेटाडेटा,
        टेबलनाम = "एल्बम"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    पसंदीदा: बूल = ormar। बूलियन (default = False)

एल्बम = एल्बम (नाम = "डार्क साइड ऑफ द मून")

# ओमार <0.20
एल्बम_जसन = एल्बम। जसन ()

# ormar> = 0.20
new_album_dict = album.model_dump_json ()

कृपया ध्यान दें कि पैरामीटर समान हैं, अर्थात् शामिल करें, बाहर करें, आदि।

निर्माण () नमूना बन जाता है \ _ निर्माण ()

 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
आयात डेटाबेस
आयात करें
आयात sqlalchआयात करें

डेटाबेस = डेटाबेस। डेटाबेस ("sqlite: //db.sqlite")
मेटाडेटा = वर्गधर्मी। मेटाडेटा ()

कक्षा अल्बूm (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस,
        मेटाडेटा = मेटाडेटा,
        टेबलनाम = "एल्बम"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    पसंदीदा: बूल = ormar। बूलियन (default = False)

परम = {
    "नाम": "चंद्रमा का डार्क साइड",
    "पसंदीदा": सच है,
}
# ओमार <0.20
एल्बम = एल्बम। निर्माण (** params)

# ormar> = 0.20
एल्बम = मॉडल_कंस्ट्रक्शन (** params)

निर्माण के बारे में अधिक जानने के लिए, dप्रलेखन देखें।