स्कीमा लागू करना

Python में MongoDB परिचय

Filip Schouwenaars

Machine Learning Researcher

लचीले से वैलिडेटेड स्कीमा तक

  • MongoDB आपको बिना फिक्स्ड स्कीमा के डेटा स्टोर करने देता है
  • तेज़ प्रोटोटाइपिंग और evolving डेटा मॉडल के लिए बढ़िया
mov.insert_one({
    "title": "knives out",
    "genre": ["comedy", "crime", "drama"],
    "year": 2019, # oops
    "rating": 7.9,
})

mov.find_one({ "title": "knives out", "release_year": 2019 })
  • जब स्कीमा स्पष्ट हो, तो वैलिडेशन कॉन्फ़िगर करना ज़रूरी है
Python में MongoDB परिचय

pydantic से स्कीमा लागू करें

  • डेटा वैलिडेशन लाइब्रेरी
  • अपेक्षित फ़ील्ड और उनके टाइप परिभाषित करें
  • हर डॉक्यूमेंट के लिए ब्लूप्रिंट
from pydantic import BaseModel
from typing import Optional

class Movie(BaseModel):
    title: str
    genre: list[str]
    release_year: int
    rating: float
    won_oscar: Optional[bool] = None
Python में MongoDB परिचय

टाइप्ड डेटा मॉडल के साथ insert करना

# Before
new_movie = {
  "title": "knives out",
  "genre": ["comedy", "crime", "drama"],
  "year": 2019, # oops
  "rating": 7.9,
}
# No output
  • डेटा फ़ॉर्मेट पर कोई जाँच नहीं
# Now
new_movie = Movie(
  title = "knives out",
  genre = ["comedy", "crime", "drama"],
  year = 2019, # oops
  rating = 7.9,
)
pydantic.error_wrappers.ValidationError:
1 validation error for Movie
release_year: field required
  • टाइपो और missing फ़ील्ड कलेक्शन में जाने से पहले पकड़े जाते हैं!
Python में MongoDB परिचय

हमारी गलती ठीक करना

from pydantic import BaseModel
from typing import Optional

class Movie(BaseModel):
    title: str
    genre: list[str]
    release_year: int
    rating: float
    won_oscar: Optional[bool] = None 
# सही फ़ील्ड और फ़ील्ड मानों का सेट
new_movie = Movie(
  title = "knives out",
  genre = ["comedy", "crime", "drama"],
  release_year = 2019,
  rating = 7.9,
)

mov.insert_one(dict(new_movie))
InsertOneResult(...)
Python में MongoDB परिचय

MongoDB का बिल्ट-इन स्कीमा वैलिडेशन

client.film.create_collection(
  "movies_v2",
  validator={
    "$jsonSchema": {
      "required": ["title", "genre", "release_year", "rating"],
      "properties": {
        "title": { "bsonType": "string" },
        "genre": { 
          "bsonType": "array",
          "items": { "bsonType": "string" }
        },
        "release_year": { "bsonType": "int" },
        "rating": { "bsonType": "double" },
        "won_oscar": { "bsonType": "bool" }
      }
    }
  }
)
Python में MongoDB परिचय

MongoDB के बिल्ट-इन स्कीमा वैलिडेशन का परीक्षण

client.film.movies_v2.insert_one({
  "title": "knives out",
  "genre": ["comedy", "crime", "drama"],
  "year": 2019, # oops
  "rating": 7.9,
})
pymongo.errors.WriteError: Document failed validation, [...]
'missingProperties': ['release_year'], 'errmsg': 'Document failed validation'}
  • डेटाबेस स्तर पर स्कीमा वैलिडेशन
  • MongoDB एक्सेस करने वाले सभी ऐप्स में काम करता है
Python में MongoDB परिचय

सारांश

  • एप्लिकेशन-साइड वैलिडेशन: pydantic.BaseModel
  • डेटाबेस-साइड वैलिडेशन: MongoDB का बिल्ट-इन स्कीमा वैलिडेशन
  • गलतियाँ रोकें
  • स्ट्रक्चर लागू करें
Python में MongoDB परिचय

अभ्यास करते हैं!

Python में MongoDB परिचय

Preparing Video For Download...