Wprowadzenie
Walidacja danych jest bardzo ważna podczas pracy ze złożonymi strukturami danych. Wyobraź sobie, że chcesz przeczytać plik YAML zawierający ważne dane, które są używane do skonfigurowania aplikacji. Chcesz upewnić się, że wszystkie pola mają odpowiedni typ i wartości, które mają sens. Jestem pewien, że nikt nie chce mieć rekordu bazy danych, w którym nazwa użytkownika ma 25 lat, a wiek to Natalia:).
Pydantic to biblioteka Pythona typu open source, która umożliwia programistom łatwą i szybką walidację danych. W tym artykule chcę skupić się na pokazaniu potencjału Pythantic - Dowiesz się, jak zweryfikować swoje dane, szybko załadować plik YAML, jak przekazywać tajne wartości, takie jak hasła, i wiele innych. Ciesz się!
Instalacja
Zanim zaczniemy, musimy zainstalować Pydantic. Użyj tego polecenia pip w konsoli:

Prosty przykład
Na początku napiszmy prosty kod wycinany tam, gdzie używana jest biblioteka Pydantic.

Aby skorzystać z walidacji Pydantic, musisz zaimportować BaseModel i utworzyć nową klasę, która dziedziczy z niej - jak w naszym przykładzie klasa User dziedziczy z BaseModel. Od teraz powiemy, że klasa User jest modelem Pydantic. W tym momencie za każdym razem, gdy tworzysz nowy obiekt Pydantic sprawdzi, czy podane dane mają prawidłowy typ.
Przykład tworzenia obiektu klasy User, gdy podane argumenty mają prawidłowe typy:

Przykład tworzenia obiektu klasy User, gdy podane argumenty mają błędne typy:

Pydantic uznał, że chcemy użyć nieprawidłowych argumentów i podniósł odpowiedni wyjątek, który informuje nas, co jest nie tak.
Walidacja
Pydantic zyskał popularność dzięki swojej zdolności do łatwej i solidnej walidacji danych. Zagłębimy się w jakiś kod i wymyślmy go!

W tym przykładzie, dodaliśmy walidator, który sprawdza, czy podany wiek jest dodatni. Jeśli jest to negatywne, właściwy wyjątek wzrasta.

Przykład ładowania pliku YAML
Klasy dziedziczone po BaseModel mają kilka nowych metod. Są one opisane w oficjalnej dokumentacji Pytest - https://docs.pydantic.dev/usage/models/. Jednym z nich jest metoda parse_obj, która pozwala nam załadować dowolny obiekt do modelu Pydantic. Istnieje wiele zastosowań tej funkcji - na przykład ładowanie pliku YAML do modelu.
Zbierzmy informacje o użytkownikach pliku users.yaml.

Następnie możemy odczytać plik i użyć metody parse_obj, aby załadować dane do modelu użytkownika.


Tajny ciąg w języku Pydantic
Niektóre zmienne mogą być wrażliwe i nie chcemy, aby ktoś je znał. Może to być hasło, login, token i wiele innych. Na szczęście Pydantic ma dla niego specjalny typ - SecretStr. Pozwól, że pokażę ci, jak to działa.


Konfiguracja modelu z klasą Config
Aby skonfigurować model Pydantic, możemy dodać klasę Config wewnątrz modelu. Pozwala nam dostosować nasz model, aby najbardziej odpowiadał naszym potrzebom. W tym artykule chcę pokazać niektóre możliwości klasy Config, ale uwierz mi - jest ich o wiele więcej (sprawdź oficjalną dokumentację tutaj - https://docs.pydantic.dev/usage/model_config/).
1. Ustaw maksymalną długość łańcucha


2. Usuń białe odstępy wokół łańcucha


3. Zezwalaj na dodatkowe pola


Podsumowanie
Dziękuję bardzo za przeczytanie tego artykułu. Mam nadzieję, że Ci się podobało, a przedstawione tutaj przykłady pomogą Ci zrozumieć bibliotekę Pydantic i wdrożyć nowe rozwiązania do Twojego kodu.
Przyszłość inżynierii danych - trendy do obserwacji w 2025 roku
Data Warehouse vs Data Lake vs Lakehouse: Kompleksowe porównanie podejść do zarządzania danymi
10 najlepszych praktyk inżynierii danych, których należy przestrzegać w Twojej firmie