विषय पर बढ़ें

सामान्य पैरामीटर

सभी फ़ील्ड प्रकारों में मापदंडों का एक सामान्य सेट होता है।

प्राथमिक कुंजी

प्राथमिक \ _ कुंजी: b= गलत -> डिफ़ॉल्ट गलत है।

तालिका पर प्राथमिक कुंजी स्तंभ सेट करें ताकि विदेशी कुंजी हमेशा नमूना के pk को संदर्भित करे।

यह केवल SQL में उपयोग किया जाता है।

ऑटो वेतन वृद्धि

ऑटोइन्क्रीमेंट: b= प्राथमिक \ _ कुंजी और प्रकार = int -> डिफ़ॉल्ट सत्य यदि स्तंभ एक प्राथमिक कुंजी है और प्रकार पूर्णांक है, अन्यथा गलत।

इसका उपयोग केवल int / int फ़ील्ड के साथ किया जा सकता है।

यदि किसी फ़ील्ड में ऑटो-इन्क्रीमेंट है, तो यह वैकल्पिक हो जाता है।

SQL और dमें उपयोग किया जाता है (ऑटो-इन्क्रीमेंट के लिए PK फ़ील्ड को वैकल्पिक फ़ील्ड में बदलें)।

खाली हो सकता है

Nullable: b= गलत -> संबंधपरक क्षेत्रों को छोड़कर सभी क्षेत्रों के लिए गलत करने के लिए चूक।

यदि उपयोगकर्ता निम्नलिखित में से एक प्रदान करता है, तो यह स्वचालित रूप से सत्य में बदल जाता है:

  • एक डिफ़ॉल्ट मान या फ़ंक्शन प्रदान करें
  • सर्वर \ _ डिफ़ॉल्ट मान या फ़ंक्शन प्रदान करता है
  • ger\ _ कुंजी फ़ील्ड पर ऑटो-इन्क्रीमेंट सेट करें

निर्दिष्ट करता है कि क्या कोई फ़ील्ड वैकल्पिक है या आवश्यक है, SQL और dके साथ उपयोग किया जाता है।

डिफ़ॉल्ट सेटिंग्स का उपयोग pydऔर sqlalchके लिए किया जाता है, क्योंकि ये सबसे आम सेटिंग्स हैं:

  • Null= गलत - इंगित करता है कि डेटाबेस कॉलम खाली नहीं है और क्षेत्र pydमें आवश्यक है
  • Null= - इंगित करता है कि डेटाबेस कॉलम खाली है और फ़ील्ड pydमें वैकल्पिक है

यदि आप pydऔर डेटाबेस के लिए अलग-अलग सेटिंग्स सेट करना चाहते हैं, तो नीचे sql \ _ nullदेखें।

!!!ध्यान दें कि डिफ़ॉल्ट रूप से, सभी विदेशी कुंजियाँ भी शून्य हो सकती हैं, जो माध्य कि कोई संबंधित नमूना की आवश्यकता नहीं है।

1
यदि आप बदलते हैं `ForeignKey` कॉलम को `nullable=False`, इसकी आवश्यकता हो जाती है।

SQL \ _ अशक्त

SQL \ _ nullable: b= nullable -> nullable मानों में चूक (जैसा कि ऊपर वर्णित है)।

निर्दिष्ट करता है कि क्या फ़ील्ड नल नहीं है या डेटाबेस में केवल नल की अनुमति है।

यदि आप dऔर डेटाबेस में विभिन्न विकल्पों को सेट करना चाहते हैं, तो केवल nullके साथ संयोजन में इस सेटिंग नमूना का उपयोग करें।

एक उदाहरण उपयोग डेटाबेस में एक फ़ील्ड को गैर-अशक्त बनाने के लिए हो सकता है, लेकिन इसे pydमें अशक्त होने की अनुमति दें (यानी सर्वर \ _ डिफ़ॉल्ट मान का उपयोग करके)। यह फ़ील्ड को नल में अपडेट होने से रोकेगा (जैसा कि सर्वर \ _ डिफ़ॉल्ट सेटिंग के साथ, आप नल मान सम्मिलित नहीं कर सकते क्योंकि डिफ़ॉल्ट मान का उपयोग किया जाएगा)

डिफ़ॉल्ट

चूक: कोई भी = कोई नहीं -> डिफ़ॉल्ट कोई नहीं है।

यदि कोई अन्य मान पारित नहीं किया जाता है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है।

SQL में सम्मिलित समय पर कहा जाता है, जिसका उपयोग dपरिभाषा नमूना दौरान किया जाता है।

यदि फ़ील्ड में डिफ़ॉल्ट मान है, तो यह वैकल्पिक हो जाता है।

आप स्थैतिक मान या कॉल पास कर सकते हैं (functions, etc.)

इसका उपयोग SQL और dदोनों में किया जाता है।

उपयोग का उदाहरण:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# एक मूल्य और कॉल करने योग्य सूचक पारित करने के बीच अंतर पर ध्यान दें

# मूल्य
नाम: str = ormar। स्ट्रिंग (max_length = 200, डिफ़ॉल्ट = "नाम")

# ध्यान दें कि जब आप किसी फ़ंक्शन को कॉल करते हैं तो यह कॉल करने योग्य के लिए सूचक नहीं है
# इस तरह की परिभाषा स्टार्टअप पर फ़ंक्शन को कॉल करेगी और असाइन करेगी
# डिफ़ॉल्ट के लिए फ़ंक्शन का परिणाम, इसलिए यह सभी उदाहरणों के लिए निरंतर मूल्य होगा
creat_date: date.datetime = ormar। datetime.datetime.now (default=)

# यदि आप कॉल करने योग्य संदर्भ पारित करना चाहते हैं (ध्यान दें कि इसमें तर्क नहीं हो सकते हैं)
# कोष्ठक की कमी -> ormar प्रत्येक नमूना पर आपके लिए इस फ़ंक्शन को कॉल करेगा
creat_date: date.datetime = ormar। datetime.datetime.now

# कॉल करने योग्य एक फ़ंक्शन, बिल्टिन, क्लास आदि हो सकता है।

सर्वर डिफ़ॉल्ट

सर्वर \ _ default: कोई भी = कोई नहीं -> डिफ़ॉल्ट कोई नहीं है।

यदि कोई अन्य मान पारित नहीं किया जाता है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है।

SQL में सर्वर साइड पर कहा जाता है, इसलिए आप SQL फ़ंक्शंस जैसे कि अभी () या क्वेरीज़ / वैल्यू को एक स्क्वैल्केमी टेक्स्ट () क्लॉज में लपेट सकते हैं।

यदि फ़ील्ड में सर्वर \ _ डिफ़ॉल्ट मान है, तो यह वैकल्पिक हो जाता है।

आप स्थैतिक मान या कॉल पास कर सकते हैं (functions, etc.)

यह केवल SQL में उपयोग किया जाता है।

उपयोग का उदाहरण:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
from datetime import datetime

import databases
import ormar
import sqlalchemy
from sqlalchemy import func, text

database = databases.Database("sqlite:///test.db")
metadata = sqlalchemy.MetaData()


class Product(ormar.Model):

    ormar_config = ormar.OrmarConfig(
        database=database, metadata=metadata, tablename="product"
    )

    id: int = ormar.Integer(primary_key=True)
    name: str = ormar.String(max_length=100)
    company: str = ormar.String(max_length=200, server_default="Acme")
    sort_order: int = ormar.Integer(server_default=text("10"))
    created: datetime = ormar.DateTime(server_default=func.now())

!!! चेतावनी सर्वर \ _ डिफ़ॉल्ट स्वीकार str, sqlalchemy.sql.elements.ClauseElement या sqlalchemy.sql.elements.TextClause इसलिए, यदि आप पूर्णांक मान सेट करना चाहते हैं, तो आपको इसे sqlal() फ़ंक्शन में लपेटने की आवश्यकता है, जैसा कि ऊपर दिखाया गया है

!!!टिप आप एक वैध SQL भी पास कर सकते हैं (dialect specific) sqlalमें निहित ()

1
उदाहरण के लिए `func.now()` उपरोक्त के लिए आदान-प्रदान किया जा सकता है `text('(CURRENT_TIMESTAMP)')` स्क्लाइट बैकएंड के लिए

!!!जानकारी सर्वर \ _ डिफ़ॉल्ट सीधे sqlalchतालिका परिभाषा में पारित हो गया, ताकि आप सर्वर डिफ़ॉल्ट sqlalchप्रलेखन में अधिक पढ़ सकें

नाम

नाम: str = कोई नहीं -> डिफ़ॉल्ट कोई नहीं

आपको उपयोग करने के लिए कॉलम नाम उपनाम निर्दिष्ट करने की अनुमति देता है।

यह मौजूदा डेटाबेस संरचनाओं के लिए उपयोगी है जो आरक्षित कीवर्ड का उपयोग करते हैं, या यदि आप ormar फ़ील्ड नाम की तुलना में एक अलग डेटाबेस नाम का उपयोग करना चाहते हैं।

उदाहरण के रूप में निम्नलिखित कोड स्निपेट लें।

से, पायथन में एक आरक्षित शब्द के रूप में, आपको उस कॉलम नाम के साथ मॉडल बनाने से रोकेगा।

नमूना नाम को \ _ से बदलना और पैरामीटर नाम = 'from' जोड़ने से डेटाबेस कॉलम नाम के रूप में उपयोग करने के लिए ormar होगा।

1
2
 # ... संक्षिप्तता के लिए बाकी मॉडल कट
 _: str = ormar। स्ट्रिंग (max_length = 15, नाम = 'से')

इसी तरह, आप ormar में वांछित संबंधपरक नामों को बनाए रखते हुए डेटाबेस में विदेशी कुंजी कॉलम नामों को बदल सकते हैं:

1
2
 # ... संक्षिप्तता के लिए बाकी मॉडल कट
एल्बम: वैकल्पिक [एल्बम] = ormar। विदेशी (एल्बम, नाम = "एल्बम_आईडी")

सूचकांक

सूचकांक: बूल = गलत -> डिफ़ॉल्ट गलत है,

तालिका स्तंभ का सूचकांक सेट करता है।

यह केवल SQL में उपयोग किया जाता है।

अद्वितीय

अद्वितीय: बूल = गलत

तालिका स्तंभों पर अद्वितीय बाधाएं सेट करता है।

यह केवल SQL में उपयोग किया जाता है।

ओवरले \ _ pyd\ _ प्रकार

डिफ़ॉल्ट रूप से, mar पूर्वनिर्धारित dफ़ील्ड प्रकार का उपयोग करता है, जो नमूना निर्माण पर लागू होता है (इसलिए प्रकार संकेत वैकल्पिक है)।

यदि आप चाहें, तो आप अपने स्वयं के प्रकारों को लागू कर सकते हैं, जो पूरी तरह से अंतर्निहित प्रकारों को बदल देगा। इसलिए, एक उपयोगकर्ता के रूप में, उन प्रकारों को प्रदान करना आपकी जिम्मेदारी है जो किसी दिए गए ormar फ़ील्ड प्रकार के संदर्भ में मान्य हैं।

चेतावनी: डिफ़ॉल्ट रूप से, आपको अंतर्निहित dफ़ील्ड में पारित अंतर्निहित मापदंडों का उपयोग करना चाहिए।

1
आप जाँच सकते हैं कि फ़ील्ड प्रकार अनुभाग में या में कौन से तर्क समर्थित हैं [पाइडेंटिक](https://pydantic-docs.helpmanual.io/usage/schema/#field-customisation) डॉक्स।

!!!खतरनाक, गलत प्रकार के पाइडेंटिक फ़ील्ड को सेट करना आपके नमूना को तोड़ सकता है, इसलिए केवल इसे अधिलेखित करें यदि आप जानते हैं कि आप क्या कर रहे हैं।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
जैसा कि ormars की कार्यक्षमता को तोड़ना आसान है `overwrite_pydantic_type` संबंध क्षेत्रों पर तर्क उपलब्ध नहीं है!


base_ormar_config = ormar। marConfig (
    मेटाडेटा = मेटाडेटा
    डेटाबेस = डेटाबेस
)


# नमूना ओवरराइट करता है
क्लास ओवरराइटटेस्ट (ormar. Model):
    ormar_config = base_ormar_config (टेबलनाम = "ओवरराइट्स")

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    my_int: str = ormar। पूर्णांक (overwrite_pydantic_type = positiveInt)
    बाधा_निर्णय: Json = ormar। JS(
        overwrite_pydantic_type = वैकल्पिक [Json [dict [str, int]])