"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायडेंटिक • डेटा को मान्य और स्वच्छ करने से निपटना

पायडेंटिक • डेटा को मान्य और स्वच्छ करने से निपटना

2024-08-19 को प्रकाशित
ब्राउज़ करें:776

Pydantic • Dealing with validating and sanitizing data

जब से मैंने प्रोग्रामिंग शुरू की है, मैंने ज्यादातर संरचित और प्रक्रियात्मक प्रतिमानों का उपयोग किया है, क्योंकि मेरे कार्यों के लिए अधिक व्यावहारिक और प्रत्यक्ष समाधान की आवश्यकता थी। डेटा निष्कर्षण के साथ काम करते समय, मुझे अधिक व्यवस्थित कोड प्राप्त करने के लिए नए प्रतिमानों में बदलाव करना पड़ा।

इस आवश्यकता का एक उदाहरण स्क्रैपिंग कार्यों के दौरान था जब मुझे विशिष्ट डेटा कैप्चर करने की आवश्यकता थी जो शुरू में उस प्रकार का था जिसे मैं संभालना जानता था, लेकिन फिर अचानक, यह या तो अस्तित्व में नहीं था या कैप्चर के दौरान एक अलग प्रकार में दिखाई दिया .

नतीजतन, मुझे कुछ if's और कोशिश करने और पकड़ने ब्लॉक को यह जांचने के लिए जोड़ना पड़ा कि क्या डेटा एक इंट या एक स्ट्रिंग था ... बाद में पता चला कि कुछ भी कैप्चर नहीं किया गया था, कोई नहीं , आदि। शब्दकोशों के साथ, मैंने कुछ अरुचिकर "डिफ़ॉल्ट डेटा" को इन स्थितियों में सहेज लिया:

data.get(values, 0)

खैर, भ्रमित करने वाले त्रुटि संदेशों को निश्चित रूप से दिखना बंद करना पड़ा।

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

अब, डेटा हेरफेर जैसे कार्यों में और एक नए प्रतिमान के साथ, मेरे पास ऐसी वस्तुएं हो सकती हैं जिनके प्रकार स्पष्ट रूप से घोषित होंगे, साथ ही एक पुस्तकालय जो इन प्रकारों को मान्य करने की अनुमति देगा। यदि कुछ गलत होता है, तो बेहतर वर्णित त्रुटि जानकारी देखकर डीबग करना आसान हो जाएगा।


पाइडेंटिक

तो, यहां पाइडेंटिक दस्तावेज है। अधिक प्रश्नों के लिए, परामर्श लेना हमेशा अच्छा होता है।

मूल रूप से, जैसा कि हम पहले से ही जानते हैं, हम इससे शुरू करते हैं:

pip install pydantic

और फिर, काल्पनिक रूप से, हम उस स्रोत से ईमेल कैप्चर करना चाहते हैं जिसमें ये ईमेल हैं, और उनमें से अधिकतर इस तरह दिखते हैं: "[email protected]"। लेकिन कभी-कभी, यह इस तरह आ सकता है: "xxxx@" या "xxxx"। हमें उस ईमेल प्रारूप के बारे में कोई संदेह नहीं है जिसे कैप्चर किया जाना चाहिए, इसलिए हम इस ईमेल स्ट्रिंग को पाइडेंटिक के साथ मान्य करेंगे:

from pydantic import BaseModel, EmailStr

class Consumer(BaseModel):
    email: EmailStr
    account_id: int

consumer = Consumer(email="teste@teste", account_id=12345)

print(consumer)

ध्यान दें कि मैंने एक वैकल्पिक निर्भरता, "ईमेल-सत्यापनकर्ता" का उपयोग किया है, जिसे इसके साथ स्थापित किया गया है: पाइप इंस्टाल पाइडेंटिक[ईमेल]। जब आप कोड चलाते हैं, जैसा कि हम जानते हैं, त्रुटि अमान्य ईमेल प्रारूप "teste@teste" में होगी:

Traceback (most recent call last):
  ...
    consumer = Consumer(email="teste@teste", account_id=12345)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  ...: 1 validation error for Consumer
email
  value is not a valid email address: The part after the @-sign is not valid. It should have a period. [type=value_error, input_value='teste@teste', input_type=str]

डेटा को सत्यापित करने के लिए वैकल्पिक निर्भरता का उपयोग करना दिलचस्प है, ठीक उसी तरह जैसे कि हमारी अपनी मान्यता बनाना दिलचस्प है, और पाइडेंटिक इसे field_validator के माध्यम से अनुमति देता है। तो, हम जानते हैं कि अकाउंट_आईडी सकारात्मक और शून्य से अधिक होनी चाहिए। यदि यह भिन्न है, तो पाइडेंटिक के लिए यह चेतावनी देना दिलचस्प होगा कि एक अपवाद, एक मूल्य त्रुटि थी। तब कोड होगा:

from pydantic import BaseModel, EmailStr, field_validator

class Consumer(BaseModel):
    email: EmailStr
    account_id: int

    @field_validator("account_id")
    def validate_account_id(cls, value):
        """Custom Field Validation"""
        if value 





$ python capture_emails.py
Traceback (most recent call last):
...
    consumer = Consumer(email="[email protected]", account_id=0)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

...: 1 validation error for Consumer
account_id
  Value error, account_id must be positive: 0 [type=value_error, input_value=0, input_type=int]
    For further information visit https://errors.pydantic.dev/2.8/v/value_error

अब, कोड को सही मानों के साथ चला रहा हूं:

from pydantic import BaseModel, EmailStr, field_validator

class Consumer(BaseModel):
    email: EmailStr
    account_id: int

    @field_validator("account_id")
    def validate_account_id(cls, value):
        """Custom Field Validation"""
        if value 





$ python capture_emails.py
email='[email protected]' account_id=12345

सही?!

मैंने देशी "डेटाक्लासेस" मॉड्यूल के बारे में भी कुछ पढ़ा है, जो थोड़ा सरल है और इसमें पाइडेंटिक के साथ कुछ समानताएं हैं। हालाँकि, पाइडेंटिक अधिक जटिल डेटा मॉडल को संभालने के लिए बेहतर है जिनके लिए सत्यापन की आवश्यकता होती है। डेटाक्लासेस को मूल रूप से पायथन में शामिल किया गया था, जबकि पाइडेंटिक को नहीं—कम से कम, अभी तक नहीं।

विज्ञप्ति वक्तव्य यह लेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/evertontenorio/pydantic-dealing-with-validating-and-saniteasing-data-594p?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए स्टडी_गोलंग@163.com से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3