Paano Pahusayin ang Paghawak ng Data gamit ang Pydantic Dataclasses

Paano Pahusayin Ang Paghawak Ng Data Gamit Ang Pydantic Dataclasses



Ang mga Pydantic dataclass ay nag-aalok ng isang advanced na solusyon upang pinuhin ang paghawak ng data sa Python. Ang pagtatrabaho bilang balangkas ng pagpapatunay ng data ay pinapasimple ang proseso ng paglikha ng structured na data sa pamamagitan ng pagsasama nito sa mga dataclass. I-automate nito ang pagpapatunay ng data, pag-uulat ng error, at mga conversion ng datatype. Tinitiyak nito na ang data ay naaayon sa tinukoy na mga kinakailangan. Sinusuportahan din nito ang mga default na halaga, mga opsyonal na field, at kumplikadong istruktura ng data. Sa madaling salita, tinutulungan ng mga Pydantic dataclass ang mga programmer na i-optimize ang mga kasanayan sa pangangasiwa ng data, na humahantong sa epektibo at maaasahang mga resulta ng coding.

Syntax:

Ang isang simple ngunit epektibong paraan upang mapahusay kung paano pinamamahalaan ang data gamit ang Pydantic dataclasses sa Python ay sa pamamagitan ng paggamit ng class decorator sa tulong kung saan kami ay mahalagang lumikha ng isang modelo para sa hitsura ng aming data. Ito ay tulad ng pagbibigay sa aming data ng isang malinaw na istraktura. Kaya, ang syntax upang tukuyin ang klase ng data ay ang mga sumusunod:







klase modelo_pangalan ( BaseModel )

Ang 'model_name' ay nagpapakita ng pangalan ng modelo na gusto naming gawin at ang 'BaseModel' mula sa Pydantic ay kumikilos bilang isang tagapag-alaga na nagsisiguro na ang data ay sumusunod sa mga panuntunang itinakda namin at ipinapasa sa modelo bilang input parameter nito. Sa loob ng klase, tinutukoy namin kung anong uri ng impormasyon ang dapat taglayin ng bawat piraso ng data. Tinitiyak ng prosesong ito na kapag gumawa kami ng instance ng dataclass, ang impormasyong ibibigay namin ay tumutugma sa aming tinukoy.



Paraan 1: Pinahusay na Paghawak ng Data gamit ang Dataclass ng Pydantic

Isipin na gumagawa kami ng isang simpleng application upang ayusin ang impormasyon tungkol sa mga aklat sa aming koleksyon. Gusto naming tiyakin na ang data na aming kinokolekta para sa layuning ito ay tumpak, pare-pareho, at maayos ang pagkakaayos. Dito pumapasok ang mga Pydantic dataclasses upang pasimplehin at pagbutihin ang proseso.



Ang pagsisimula sa halimbawa ay nangangailangan ng pagtukoy ng isang Pydantic Dataclass. Kaya, magsisimula tayo sa pamamagitan ng pagtukoy sa isang Pydantic dataclass na pinangalanang 'Mga Aklat' na kumakatawan sa mga detalye ng Aklat. Upang tukuyin ang dataclass para sa Pydantic, kailangan nating tiyakin na ang lahat ng mga pakete ng Pydantic ay na-install bago sa proyekto.





mula sa pydantic angkat BaseModel

Gamit ang class decorator, ginagawa namin ang klase na 'Book' na nagmana mula sa BaseModel ng Pydantic. Sa loob ng klase, tinutukoy namin ang mga katangian tulad ng pamagat, may-akda, at release_year, bawat isa ay nauugnay sa kani-kanilang uri ng data.

klase Aklat ( BaseModel ) :

pamagat: str

may-akda: str

release_year: int

Pagkatapos gumawa ng modelo ng klase, ginagamit namin ang Pydantic dataclass, na kinukuha ang kapangyarihan ng 'Book' dataclass upang pangasiwaan ang data ng 'pelikula':



Sa seksyong ito, ginagaya namin ang isang user na naglalagay ng mga detalye tungkol sa aklat. Ang modelo ng 'libro' dataclass ay may mga katangian tulad ng pamagat, may-akda, at inilabas na taon kasama ng kanilang mga natatanging datatype. Kaya, sa bahaging ito, ibig sabihin, 'input', tinukoy namin ang kanilang mga halaga.

input = {

'pamagat' : 'Magdusa' ,

'may-akda' : 'Adam' ,

'release_year' : 2023

}

Pagkatapos ng mga pagtutukoy ng mga detalye tungkol sa mga katangian ng modelo ng aklat sa input, gumawa kami ng instance na 'Aklat' na may ibinigay na data gamit ang mga detalyeng ito; ginagawa ito upang matiyak na awtomatikong pinapatunayan ng Pydantic ang input laban sa tinukoy na istraktura ng data. Kung mayroong anumang hindi pagkakapare-pareho o pagkakamali, tulad ng isang non-integer na taon ng paglabas o isang nawawalang pamagat, mabilis na naglalabas ang Pydantic ng isang error kasama ng isang madaling gamitin na paliwanag.

subukan :

aklat = Aklat ( ** input )

print ( 'Mga detalye ng libro:' , aklat. pamagat , aklat. may-akda , aklat. release_year )

maliban sa Exception bilang Ito ay:

print ( 'Error:' , Ito ay )

Para sa karanasang pinahusay na paghawak ng data gamit ang Pydantic dataclasses, nakakatanggap kami ng built-in na mekanismo para sa validation at consistency ng data. Maaari naming isama ang mga opsyonal na field, default na value, at kumplikadong nested structure para masakop ang iba't ibang sitwasyon ng data. Tinitiyak nito na ang aming data ay nananatiling organisado at wastong na-format.

Ine-explore ng hakbang na ito kung paano nag-aalok ang Pydantic dataclasses ng mga pinahusay na kakayahan sa paghawak ng data sa pamamagitan ng mga feature tulad ng mga opsyonal na field, default na value, at nested structure.

Narito ang isang halimbawa kung saan ipinapakita namin kung paano idagdag ang mga opsyonal na field at mga default na halaga:

Ipagpalagay na gusto naming payagan ang mga user na ipasok ang mga karagdagang detalye tungkol sa mga aklat gaya ng genre at runtime. Gayunpaman, maaaring hindi palaging available ang mga detalyeng ito. Sa Pydantic dataclasses, madali nating makakamit ito sa pamamagitan ng paggawa ng mga field na opsyonal at maging ang pagtatakda ng mga default na value.

Sa halimbawang ito, ang 'Movie' dataclass ay may kasamang dalawang bagong field: ang wika kung saan nakasulat ang aklat at ang bilang ng mga pahina. Ang field ng 'wika' ay may default na halaga ng 'Hindi Alam' na nagpapahiwatig na kung hindi ibigay ng user ang detalyeng ito, ito ay magiging default sa 'Hindi Alam.' Ang field na 'bilang ng mga pahina' ay opsyonal at maaaring iwanang blangko (itakda sa wala).

mula sa pydantic angkat BaseModel
klase Aklat ( BaseModel ) :
pamagat: str
may-akda: str
release_year: int
wika: str = 'hindi kilala'
mga pahina: int = wala
input = {
'pamagat' : 'Magdusa' ,
'may-akda' : 'Adam' ,
'release_year' : 2023 ,
'wika' : 'Ingles' ,
'mga pahina' : 2. 3. 4
}
aklat = Aklat ( ** input )
print ( 'Mga detalye ng libro:' , aklat. pamagat , aklat. may-akda , aklat. release_year , aklat. wika , aklat. mga pahina )

Maaari naming kopyahin ang mga linyang ito ng code at i-paste ang mga ito sa compiler upang maobserbahan ang mga resulta:

mula sa pydantic angkat BaseModel
klase Aklat ( BaseModel ) :
pamagat: str
may-akda: str
release_year: int
input = {
'pamagat' : 'Magdusa' ,
'may-akda' : 'Adam' ,
'release_year' : 2023
}

# Paglikha ng isang halimbawa ng libro
subukan :
aklat = Aklat ( ** input )
print ( 'Mga detalye ng libro:' , aklat. pamagat , aklat. may-akda , aklat. release_year )
maliban sa Exception bilang Ito ay:
print ( 'Error:' , Ito ay )

Sa pamamagitan ng pagsasama ng mga opsyonal na field at default na value na ito, tinitiyak ng Pydantic na mananatiling maayos at pare-pareho ang data kahit na hindi nagbibigay ang mga user ng ilang partikular na detalye.

Paraan 2: Pangangasiwa ng Data gamit ang Dataclass ng Pydantic para sa Form ng Pagpaparehistro ng Mag-aaral

Isipin na gumagawa tayo ng registration form para sa isang kaganapan sa paaralan. Kailangang ipasok ng mga tao ang kanilang impormasyon, at gusto naming maiwasan ang mga pagkakamali. Doon nakakatulong ang mga Pydantic dataclass. Sinisigurado nilang tama ang data at madaling mahawakan ito.

Pagkatapos dalhin ang mga kinakailangang pakete sa proyektong Python, tinukoy namin ang isang Pydantic dataclass sa pamamagitan ng paggawa ng Pydantic dataclass na tinatawag na 'Student' para sa mga detalye ng kalahok.

mula sa pydantic angkat BaseModel

Gamitin ang dekorador ng klase upang i-set up ang klase ng 'Mag-aaral'. Nagmana ito mula sa BaseModel ng Pydantic. Sa loob, pinangalanan namin ang mga katangian tulad ng pangalan, email, departamento, at telepono, bawat isa ay may uri ng data nito.

klase Mag-aaral ( BaseModel ) :

pangalan: str

email : str

departamento: str

telepono: str

Gamit ang Pydantic dataclass ngayon, makipagtulungan sa 'Student' dataclass upang pamahalaan ang data ng mag-aaral:

impormasyon = {

'pangalan' : 'XYZ' ,

'email' : 'xyz@student.com' ,

'kagawaran' : 'Andrew' ,

'telepono' : '0003-4567234'

}

Sa bahaging ito, nagpapanggap kaming may nag-sign up. Kapag gumawa kami ng instance na 'Mag-aaral' gamit ang kanilang data, tinitingnan ng Pydantic kung akma ito sa istraktura. Kung may error, tulad ng isang email na walang '@' o isang non-string na departamento, hihinto ang Pydantic at ipapaliwanag ang isyu.

mag-aaral = Mag-aaral ( **impormasyon )

print ( 'Mga detalye ng mag-aaral:' , mag-aaral )

Ang pinahusay na pangangasiwa ng data gamit ang Pydantic dataclasses ay nagbibigay sa amin ng isang handa nang gamitin na data. Maaari kaming magdagdag ng higit pang mga field, itakda ang mga default, o gumana sa mga kumplikadong pag-setup ng data. Ginagarantiyahan ng lahat ng ito na mananatiling organisado ang aming data.

Ang code at ang snippet ng output ay binanggit sa sumusunod para sa obserbasyon:

mula sa pydantic angkat BaseModel

klase Mag-aaral ( BaseModel ) :
pangalan: str
email : str
departamento: str
telepono: str

impormasyon = {
'pangalan' : 'XYZ' ,
'email' : 'xyz@student.com' ,
'kagawaran' : 'Andrew' ,
'telepono' : '0003-4567234'
}
mag-aaral = Mag-aaral ( **impormasyon )
print ( 'Mga detalye ng mag-aaral:' , mag-aaral )

Matapos obserbahan ang output, maaari nating ibuod na ang mga Pydantic dataclass ay ginagawang maayos ang paghawak ng data sa simpleng halimbawang ito. Tinitiyak nila na tumutugma ang input sa gusto natin. Nangangahulugan ito ng mas kaunting mga error at mas masaya na mga gumagamit.

Konklusyon

Isinasama ng mga Pydantic dataclasses kung paano tayo makitungo sa data. Ginagarantiya nila na ang impormasyon ay parehong tumpak at akma sa kinakailangang istraktura. Isinasalin ito sa mas kaunting mga error at mas walang kamali-mali na mga application. Sa Pydantic, maaaring italaga ng mga developer ang kanilang mga pagsisikap sa paggawa ng mga app na gumagana nang maayos nang hindi naaabala ng mga alalahanin tungkol sa mga isyu sa data. Isipin ito bilang pagkakaroon ng nakalaang task manager para lamang sa pamamahala ng data, na tinitiyak na ang lahat ay tumatakbo nang maayos mula simula hanggang matapos.