विषय पर बढ़ें

डेटाबेस से डेटा पढ़ें

निम्नलिखित विधियां आपको डेटाबेस से डेटा लोड करने की अनुमति देती हैं।

  • प्राप्त करें (*Args, *\ * kwargs) -> नमूना

  • get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) -> Tuple[Model, bool]

  • first(*args, **kwargs) -> Model

  • all(*args, **kwargs) -> List[Optional[Model]]

  • iterate(*args, **kwargs) -> AsyncGenerator[Model]

  • नमूना

    • मॉडल.लोड () विधि
    • क्वेरी सेट एजेंट

    • QuerysetProxy.get(*args, **kwargs) विधि

    • QuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) विधि
    • QuerysetProxy.first(*args, **kwargs) विधि
    • QuerysetProxy.all(*args, **kwargs) विधि

प्राप्त करें

प्राप्त करें (*args, *\ * kwargs) -> नमूना

डेटाबेस से पहली पंक्ति प्राप्त करता है जो kwarसेट स्थितियों को संतुष्ट करता है।

यदि कोई स्थिति सेट नहीं है, तो यह कॉलम पीके द्वारा क्रमबद्ध डेटाबेस में अंतिम पंक्ति लौटाता है।

एक स्थिति को पारित करना वास्तव में फ़िल्टर को कॉल करता है (*args, *\ * kwargs) विधि नीचे वर्णित है।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
क्लास ट्रैक (ormar. Model):
    ormar_config = ormar। marConfig (
        डेटाबेस = डेटाबेस,
        मेटाडेटा = मेटाडेटा,
        टेबलनाम = "ट्रैक"
    )

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    एल्बम: वैकल्पिक [एल्बम] = ormar। विदेशी (एल्बम)
    नाम: str = ormar। स्ट्रिंग (max_length = 100)
    स्थिति: int = ormar। पूर्णांक ()


ट्रैक = Tr.का इंतजार करें (name = 'The Bird')
# ध्यान दें कि ऊपर Tr.का इंतजार करने के बराबर है (name = 'The Bird').मिल ()
Tr2 = ट्रैक = Tr.का इंतजार करें ()
ट्रैक = = ट्रैक 2
# यह हमारे उदाहरण में db में एकमात्र पंक्ति है
# और तर्कों के बिना pk कॉलम c द्वारा पहली पंक्ति लौटाएं

!!!चेतावनी, यदि कोई पंक्ति स्थिति को पूरा नहीं करती है, तो एक Noअपवाद फेंक दिया जाएगा।

1
यदि मानदंडों को पूरा करने वाली कई पंक्तियाँ हैं `MultipleMatches` अपवाद उठाया जाता है।

जाओ या कुछ नहीं

get_or_none(*args, **kwargs) -> Model

यह ठीक वैसा ही है जैसा ऊपर वर्णित है, लेकिन यदि मानदंडों से मेल खाने वाला कोई डेटाबेस रिकॉर्ड नहीं पाया जाता है, तो किसी अपवाद को फेंकने के बजाय कोई भी वापस नहीं किया जाता है।

प्राप्त करें या बनाएं

get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) -> Tuple[Model, bool]

विधियों का एक संयोजन बनाएं और प्राप्त करें।

मानदंडों को पूरा करने वाली पंक्तियों को प्राप्त करने का प्रयास, और यदि कोई Noअपवाद फेंक दिया जाता है, तो दिए गए kwarऔर \ _ डिफ़ॉल्ट के साथ एक नई पंक्ति बनाई जाती है।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
कक्षा अल्बूm (ormar. Model):
    ormar_config = आधार_ormar_config (tablename = "album")

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


एल्बम, बनाया = एल्बम। objects.get_or_create (नाम = 'द कैट', _defaults ={"year": 1999})
बनाया गया आरोप सत्य है
album.name = = "द कैट"
सम्मिलित एल्बम। वर्ष == 1999
#object बनाया गया है क्योंकि यह मौजूद नहीं है
एल्बम 2, बनाया = एल्बम का इंतजार करें। objects.get_or_create (name = 'The Cat')
बनाया गया आरोप गलत है
एल्बम = = एल्बम 2
# वापसी सच है क्योंकि एक ही db पंक्ति वापस आ गई है

!!!चेतावनी: डेटाबेस में समान पंक्तियाँ होने के बावजूद, ऊपर दिए गए उदाहरण में एल्बम और एल्बम 2 दो अलग-अलग पायथन ऑब्जेक्ट हैं! उनमें से एक को अपडेट करना दूसरे को ताज़ा नहीं करता है जब तक कि आप स्पष्ट रूप से लोड नहीं करते हैं () डेटाबेस से नया डेटा।

ध्यान दें कि यदि आप एक नई वस्तु बनाना चाहते हैं, तो आपको या तो pk कॉलम मान पास करना होगा, या pk कॉलम को ऑटो-इन्क्रीमेंट पर सेट किया जाना चाहिए

पहले

first(*args, **kwargs) -> Model

डेटाबेस से प्राथमिक कुंजी कॉलम द्वारा आरोही क्रमबद्ध करना में क्रमबद्ध पहली पंक्ति हो जाती है।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
कक्षा अल्बूm (ormar. Model):
    ormar_config = आधार_ormar_config (tablename = "album")

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


प्रतीक्षा एल्बम। (name = 'The Cat')
प्रतीक्षा एल्बम। (name = 'The Dog')
एल्बम = एल्बम का इंतजार करें।
प्राथमिक_की कॉलम asc द्वारा # पहली पंक्ति
album.name = = 'द कैट'

सभी

all(*args, **kwargs) -> List[Optional["Model"]]

सेट फ़िल्टर विकल्प के लिए, दिए गए नमूना के लिए डेटाबेस में सभी पंक्तियों को लौटाता है।

Kwarपासिंग एक शॉर्टकट है, जो कॉलिंग फिल्टर के बराबर है (*Args, *\ * kwargs).all ()।

यदि कोई पंक्ति नहीं है जो स्थिति को संतुष्ट करती है, तो एक खाली सूची वापस आ जाती है।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
कक्षा अल्बूm (ormar. Model):
    ormar_config = आधार_ormar_config (tablename = "album")

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


क्लास ट्रैक (ormar. Model):
    ormar_config = आधार_ormar_config (tablename = "track")

    आईडी: int = ormar। पूर्णांक (primary_key = True)
    एल्बम: वैकल्पिक [एल्बम] = ormar। विदेशी (एल्बम)
    शीर्षक: str = ormar। स्ट्रिंग (max_length = 100)
    स्थिति: int = ormar। पूर्णांक ()


ट्रैक्स = ट्रैक.ऑब्जेक्ट्स.सेलेक्ट_संबंधित ("एल्बम").all (album__title='Sample')
# एल्बम नमूना के लिए सभी ट्रैक्स की एक सूची लौटाएगा
# जॉइन विजिट जॉइनिंग और सबक्वेरी सेक्शन पर अधिक

ट्रैक = Tr.all का इंतजार करें ()
# डेटाबेस में सभी ट्रैक्स की एक सूची लौटाएगा

पुनरावृत्ति

iterate(*args, **kwargs) -> AsyncGenerator["Model"]

किसी दिए गए नमूना के लिए डेटाबेस में सभी पंक्तियों के लिए एक अतुल्यकालिक पुनरावृत्त जनरेटर लौटाता है।

arऔर / या kwarपासिंग एक शॉर्टकट है जो कॉलिंग के बराबर है filter(*args, **kwargs).iterate() ...

यदि कोई पंक्तियाँ नहीं हैं जो स्थिति को संतुष्ट करती हैं, तो एक खाली अतुल्यकालिक जनरेटर वापस आ जाता है।

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
कक्षा अल्बूm (ormar. Model):
    ormar_config = आधार_ormar_config (tablename = "album")

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


प्रतीक्षा एल्बम। (name = 'The Cat')
प्रतीक्षा एल्बम। (name = 'The Dog')
# जनरेटर से एक समय में एक मुख्य नमूना देने वाले सभी एल्बम मॉडल को अतुल्यकालिक रूप से पुनरावृत्त करेगा
um.ate में एल्बम के लिए Ac ():
    प्रिंट करें (album.name)

# बिल्ली
# कुत्ता

!!!चेतावनी, पुनरावृत्त () का उपयोग करने से पिछली कॉल को प्रीफेच \ _ lated () को नजरअंदाज कर दिया जाएगा; क्योंकि ये दो अनुकूलन एक साथ समझ में नहीं आते हैं।

1
अगर `iterate()` और `prefetch_related()` एक साथ उपयोग किए जाते हैं `QueryDefinitionError` अपवाद उठाया जाता है।

नमूना विधि

प्रत्येक नमूना उदाहरण में स्वयं को सहेजने, अपडेट करने या लोड करने के तरीकों का एक सेट होता है।

लोड

आप लोड () विधि को कॉल करके एक विदेशी कुंजी संबंधित नमूना लोड कर सकते हैं।

लोड () का उपयोग डेटाबेस से नमूना को ताज़ा करने के लिए किया जा सकता है यदि इसे किसी अन्य प्रक्रिया द्वारा बदल दिया गया है।

!!!टिप नमूना विधि में लोड () विधि के बारे में अधिक पढ़ें

QueryProविधि

प्रासंगिक MToफ़ील्ड और seसीधे एक्सेस करते समय, संबंधित मॉडल की एक सूची वापस आ जाती है।

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

प्राप्त करें

कार्य सिद्धांत बिल्कुल ऊपर दिए गए फ़ंक्शन के समान है, लेकिन यह आपको रिश्ते के दूसरे छोर से संबंधित वस्तुओं को पुनः प्राप्त करने की अनुमति देता है।

!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं

जाओ या कुछ नहीं

यह ठीक वैसा ही है जैसा ऊपर वर्णित है, लेकिन यदि मानदंडों से मेल खाने वाला कोई डेटाबेस रिकॉर्ड नहीं पाया जाता है, तो किसी अपवाद को फेंकने के बजाय कोई भी वापस नहीं किया जाता है।

!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं

प्राप्त करें या बनाएं

वास्तव में ऊपर दिए गए फ़ंक्शन के समान है, लेकिन आपको संबंध के दूसरे छोर से संबंधित ऑब्जेक्ट्स को क्वेरी करने या बनाने की अनुमति देता है।

!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं

पहले

यह ऊपर दिए गए पहले फ़ंक्शन के समान है, लेकिन आपको रिश्ते के दूसरे छोर से संबंधित वस्तुओं को क्वेरी करने की अनुमति देता है।

!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं

सभी

उपरोक्त सभी के समान कार्यक्षमता, लेकिन आपको रिश्ते के दूसरे छोर से संबंधित वस्तुओं को क्वेरी करने की अनुमति देता है।

!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं