วิธีปรับปรุงการจัดการข้อมูลด้วย Pydantic Dataclasses

Withi Prabprung Kar Cadkar Khxmul Dwy Pydantic Dataclasses



คลาสข้อมูล Pydantic นำเสนอโซลูชันขั้นสูงเพื่อปรับแต่งการจัดการข้อมูลใน Python การทำงานเป็นกรอบการตรวจสอบข้อมูลทำให้กระบวนการสร้างข้อมูลที่มีโครงสร้างง่ายขึ้นโดยการรวมเข้ากับคลาสข้อมูล โดยทำให้การตรวจสอบข้อมูล การรายงานข้อผิดพลาด และการแปลงประเภทข้อมูลเป็นแบบอัตโนมัติ เพื่อให้แน่ใจว่าข้อมูลสอดคล้องกับข้อกำหนดที่ระบุ นอกจากนี้ยังสนับสนุนค่าเริ่มต้น ฟิลด์ตัวเลือก และโครงสร้างข้อมูลที่ซับซ้อน กล่าวโดยสรุป คลาสข้อมูล Pydantic ช่วยให้โปรแกรมเมอร์เพิ่มประสิทธิภาพแนวทางการจัดการข้อมูล ซึ่งนำไปสู่ผลลัพธ์การเข้ารหัสที่มีประสิทธิภาพและเชื่อถือได้

ไวยากรณ์:

วิธีที่เรียบง่ายแต่มีประสิทธิภาพในการปรับปรุงวิธีการจัดการข้อมูลโดยใช้คลาสข้อมูล Pydantic ใน Python คือการใช้ตัวตกแต่งคลาสด้วยความช่วยเหลือ ซึ่งเราจะสร้างแบบจำลองว่าข้อมูลของเราจะมีลักษณะอย่างไร มันเหมือนกับการให้โครงสร้างข้อมูลของเราที่ชัดเจน ดังนั้นไวยากรณ์ในการกำหนดคลาสข้อมูลจึงเป็นดังนี้:







ระดับ รุ่น_ชื่อ ( BaseModel )

“model_name” แสดงชื่อของโมเดลที่เราต้องการสร้างและ “BaseModel” จาก Pydantic ทำหน้าที่เหมือนผู้พิทักษ์ซึ่งทำให้มั่นใจได้ว่าข้อมูลเป็นไปตามกฎที่เราตั้งไว้และถูกส่งผ่านไปยังโมเดลเป็นพารามิเตอร์อินพุต ภายในชั้นเรียน เรากำหนดประเภทของข้อมูลแต่ละชิ้นที่ควรเก็บไว้ กระบวนการนี้ทำให้แน่ใจว่าเมื่อเราสร้างอินสแตนซ์ของคลาสข้อมูล ข้อมูลที่เราให้นั้นตรงกับที่เรากำหนดไว้



วิธีที่ 1: ปรับปรุงการจัดการข้อมูลด้วย Dataclass ของ Pydantic

ลองจินตนาการว่าเรากำลังพัฒนาแอปพลิเคชันง่ายๆ เพื่อจัดระเบียบข้อมูลเกี่ยวกับหนังสือในคอลเลกชันของเรา เราต้องการให้แน่ใจว่าข้อมูลที่เรารวบรวมเพื่อจุดประสงค์นี้มีความถูกต้อง สม่ำเสมอ และมีโครงสร้างที่ดี นี่คือจุดที่คลาสข้อมูล Pydantic เข้ามาทำให้กระบวนการง่ายขึ้นและปรับปรุง



การเริ่มต้นด้วยตัวอย่างจำเป็นต้องกำหนด Pydantic Dataclass ดังนั้นเราจึงเริ่มต้นด้วยการกำหนดคลาสข้อมูล Pydantic ชื่อ 'Books' ซึ่งแสดงถึงรายละเอียดของ Books ในการกำหนดคลาสข้อมูลสำหรับ Pydantic เราจำเป็นต้องตรวจสอบให้แน่ใจว่าแพ็คเกจของ Pydantic ทั้งหมดได้รับการติดตั้งก่อนในโครงการ





จาก ขี้อาย นำเข้า BaseModel

ด้วยการใช้ตัวตกแต่งคลาส เราสร้างคลาส 'Book' ที่สืบทอดมาจาก BaseModel ของ Pydantic ภายในชั้นเรียน เราระบุแอตทริบิวต์ เช่น ชื่อเรื่อง ผู้แต่ง และ release_year ซึ่งแต่ละรายการเชื่อมโยงกับประเภทข้อมูลตามลำดับ

ระดับ หนังสือ ( BaseModel ) : :

ชื่อ: STR

ผู้เขียน: STR

ปล่อย_ปี: ภายใน

หลังจากสร้างโมเดลคลาสแล้ว เราใช้คลาสข้อมูล Pydantic โดยรับพลังของคลาสข้อมูล 'Book' เพื่อจัดการข้อมูล 'ภาพยนตร์':



ในส่วนนี้ เราเลียนแบบผู้ใช้ที่ป้อนรายละเอียดเกี่ยวกับหนังสือ แบบจำลองของคลาสข้อมูล “หนังสือ” มีคุณสมบัติ เช่น ชื่อเรื่อง ผู้แต่ง และปีที่ออก พร้อมด้วยประเภทข้อมูลที่แตกต่างกัน ดังนั้นในส่วนนี้ เช่น 'อินพุต' เราจึงระบุค่าของมัน

ป้อนข้อมูล = {

'ชื่อ' : : 'ทุกข์ทรมาน' ,

'ผู้เขียน' : : “อดัม” ,

'ปล่อย_ปี' : : 2023

}

หลังจากข้อมูลจำเพาะของรายละเอียดเกี่ยวกับคุณลักษณะของโมเดลหนังสือในอินพุตแล้ว เราจะสร้างอินสแตนซ์ 'หนังสือ' พร้อมข้อมูลที่ให้ไว้โดยใช้รายละเอียดเหล่านี้ สิ่งนี้ทำเพื่อให้แน่ใจว่า Pydantic ตรวจสอบอินพุตกับโครงสร้างข้อมูลที่กำหนดโดยอัตโนมัติ หากมีความไม่สอดคล้องกันหรือข้อผิดพลาด เช่น ปีที่เผยแพร่ที่ไม่ใช่จำนวนเต็มหรือชื่อที่หายไป Pydantic จะแจ้งข้อผิดพลาดอย่างรวดเร็วพร้อมกับคำอธิบายที่ใช้งานง่าย

พยายาม : :

หนังสือ = หนังสือ ( ** ป้อนข้อมูล )

พิมพ์ ( 'รายละเอียดหนังสือ:' , หนังสือ. ชื่อ , หนังสือ. ผู้เขียน , หนังสือ. release_ปี )

ยกเว้น ข้อยกเว้น เช่น มันคือ:

พิมพ์ ( 'ข้อผิดพลาด:' , มันคือ )

สำหรับประสบการณ์การจัดการข้อมูลที่ได้รับการปรับปรุงด้วยคลาสข้อมูล Pydantic เราได้รับกลไกในตัวสำหรับการตรวจสอบความถูกต้องและความสม่ำเสมอของข้อมูล เราสามารถรวมฟิลด์เสริม ค่าเริ่มต้น และโครงสร้างที่ซ้อนกันที่ซับซ้อนเพื่อให้ครอบคลุมสถานการณ์ข้อมูลต่างๆ สิ่งนี้รับประกันได้ว่าข้อมูลของเรายังคงได้รับการจัดระเบียบและจัดรูปแบบอย่างถูกต้อง

ขั้นตอนนี้จะสำรวจว่าคลาสข้อมูล Pydantic นำเสนอความสามารถในการจัดการข้อมูลที่ได้รับการปรับปรุงผ่านฟีเจอร์ต่างๆ เช่น ช่องตัวเลือก ค่าเริ่มต้น และโครงสร้างแบบซ้อนได้อย่างไร

นี่คือตัวอย่างที่เราแสดงวิธีเพิ่มฟิลด์ตัวเลือกและค่าเริ่มต้น:

สมมติว่าเราต้องการอนุญาตให้ผู้ใช้ป้อนรายละเอียดเพิ่มเติมเกี่ยวกับหนังสือ เช่น ประเภทและรันไทม์ อย่างไรก็ตาม รายละเอียดเหล่านี้อาจไม่สามารถใช้ได้เสมอไป ด้วยคลาสข้อมูล Pydantic เราสามารถบรรลุเป้าหมายนี้ได้อย่างง่ายดายโดยทำให้ฟิลด์เป็นทางเลือกและแม้กระทั่งการตั้งค่าเริ่มต้น

ในตัวอย่างนี้ คลาสข้อมูล 'ภาพยนตร์' ประกอบด้วยช่องใหม่ 2 ช่อง ได้แก่ ภาษาที่ใช้เขียนหนังสือและจำนวนหน้า ช่อง 'ภาษา' มีค่าเริ่มต้นเป็น 'ไม่ทราบ' ซึ่งระบุว่าหากผู้ใช้ไม่ได้ระบุรายละเอียดนี้ ระบบจะใช้ค่าเริ่มต้นเป็น 'ไม่ทราบ' ช่อง 'จำนวนหน้า' เป็นทางเลือกและสามารถเว้นว่างไว้ได้ (ตั้งค่าเป็นไม่มี)

จาก ขี้อาย นำเข้า BaseModel
ระดับ หนังสือ ( BaseModel ) : :
ชื่อ: STR
ผู้เขียน: STR
ปล่อย_ปี: ภายใน
ภาษา: STR = 'ไม่ทราบ'
หน้า: ภายใน = ไม่มี
ป้อนข้อมูล = {
'ชื่อ' : : 'ทุกข์ทรมาน' ,
'ผู้เขียน' : : “อดัม” ,
'ปล่อย_ปี' : : 2023 ,
'ภาษา' : : 'ภาษาอังกฤษ' ,
'หน้า' : : 2. 3. 4
}
หนังสือ = หนังสือ ( ** ป้อนข้อมูล )
พิมพ์ ( 'รายละเอียดหนังสือ:' , หนังสือ. ชื่อ , หนังสือ. ผู้เขียน , หนังสือ. release_ปี , หนังสือ. ภาษา , หนังสือ. หน้า )

เราอาจคัดลอกบรรทัดโค้ดเหล่านี้และวางลงในคอมไพเลอร์เพื่อสังเกตผลลัพธ์:

จาก ขี้อาย นำเข้า BaseModel
ระดับ หนังสือ ( BaseModel ) : :
ชื่อ: STR
ผู้เขียน: STR
ปล่อย_ปี: ภายใน
ป้อนข้อมูล = {
'ชื่อ' : : 'ทุกข์ทรมาน' ,
'ผู้เขียน' : : “อดัม” ,
'ปล่อย_ปี' : : 2023
}

#การสร้างตัวอย่างหนังสือ
พยายาม : :
หนังสือ = หนังสือ ( ** ป้อนข้อมูล )
พิมพ์ ( 'รายละเอียดหนังสือ:' , หนังสือ. ชื่อ , หนังสือ. ผู้เขียน , หนังสือ. release_ปี )
ยกเว้น ข้อยกเว้น เช่น มันคือ:
พิมพ์ ( 'ข้อผิดพลาด:' , มันคือ )

ด้วยการรวมฟิลด์ตัวเลือกและค่าเริ่มต้นเหล่านี้ Pydantic รับประกันว่าข้อมูลยังคงมีโครงสร้างที่ดีและสม่ำเสมอ แม้ว่าผู้ใช้จะไม่ได้ระบุรายละเอียดบางอย่างก็ตาม

วิธีที่ 2: การจัดการข้อมูลด้วย Dataclass ของ Pydantic สำหรับแบบฟอร์มการลงทะเบียนนักศึกษา

ลองนึกภาพว่าเรากำลังจัดทำแบบฟอร์มลงทะเบียนสำหรับกิจกรรมของโรงเรียน ผู้คนจำเป็นต้องป้อนข้อมูลของตน และเราต้องการหลีกเลี่ยงข้อผิดพลาด นั่นคือสิ่งที่คลาสข้อมูล Pydantic ช่วย พวกเขาตรวจสอบให้แน่ใจว่าข้อมูลถูกต้องและจัดการได้อย่างง่ายดาย

หลังจากนำแพ็คเกจที่จำเป็นมาสู่โปรเจ็กต์ Python แล้ว เราจะกำหนดคลาสข้อมูล Pydantic โดยการสร้างคลาสข้อมูล Pydantic ที่เรียกว่า “Student” สำหรับรายละเอียดของผู้เข้าร่วม

จาก ขี้อาย นำเข้า BaseModel

ใช้มัณฑนากรชั้นเรียนเพื่อตั้งค่าคลาส 'นักเรียน' มันสืบทอดมาจาก BaseModel ของ Pydantic ภายใน เราตั้งชื่อคุณลักษณะต่างๆ เช่น ชื่อ อีเมล แผนก และโทรศัพท์ โดยแต่ละรายการด้วยประเภทข้อมูล

ระดับ นักเรียน ( BaseModel ) : :

ชื่อ: STR

อีเมล : : STR

แผนก: STR

โทรศัพท์: STR

ด้วยการใช้คลาสข้อมูล Pydantic ในตอนนี้ ให้ทำงานร่วมกับคลาสข้อมูล “Student” เพื่อจัดการข้อมูลนักเรียน:

ข้อมูล = {

'ชื่อ' : : 'เอ็กซ์วาย' ,

'อีเมล' : : 'xyz@student.com' ,

'แผนก' : : “แอนดรูว์” ,

'โทรศัพท์' : : '0003-4567234'

}

ในส่วนนี้เราแกล้งทำเป็นว่ามีคนสมัคร เมื่อเราสร้างอินสแตนซ์ “นักเรียน” โดยใช้ข้อมูลของพวกเขา Pydantic จะตรวจสอบว่าเหมาะสมกับโครงสร้างหรือไม่ หากมีข้อผิดพลาด เช่น อีเมลที่ไม่มี '@' หรือแผนกที่ไม่ใช่สตริง Pydantic จะหยุดและอธิบายปัญหา

นักเรียน = นักเรียน ( **ข้อมูล )

พิมพ์ ( 'รายละเอียดนักศึกษา:' , นักเรียน )

การจัดการข้อมูลที่ได้รับการปรับปรุงโดยใช้คลาสข้อมูล Pydantic ช่วยให้เรามีข้อมูลที่พร้อมใช้งาน เราสามารถเพิ่มฟิลด์ ตั้งค่าเริ่มต้น หรือทำงานกับการตั้งค่าข้อมูลที่ซับซ้อนได้ ทั้งหมดนี้รับประกันได้ว่าข้อมูลของเราจะได้รับการจัดระเบียบ

รหัสและตัวอย่างข้อมูลของผลลัพธ์ถูกกล่าวถึงต่อไปนี้เพื่อการสังเกต:

จาก ขี้อาย นำเข้า BaseModel

ระดับ นักเรียน ( BaseModel ) : :
ชื่อ: STR
อีเมล : : STR
แผนก: STR
โทรศัพท์: STR

ข้อมูล = {
'ชื่อ' : : 'เอ็กซ์วาย' ,
'อีเมล' : : 'xyz@student.com' ,
'แผนก' : : “แอนดรูว์” ,
'โทรศัพท์' : : '0003-4567234'
}
นักเรียน = นักเรียน ( **ข้อมูล )
พิมพ์ ( 'รายละเอียดนักศึกษา:' , นักเรียน )

หลังจากสังเกตผลลัพธ์แล้ว เราสามารถสรุปได้ว่าคลาสข้อมูล Pydantic ช่วยให้จัดการข้อมูลได้อย่างราบรื่นในตัวอย่างนี้ พวกเขาทำให้แน่ใจว่าอินพุตตรงกับสิ่งที่เราต้องการ ซึ่งหมายความว่าข้อผิดพลาดน้อยลงและผู้ใช้มีความสุขมากขึ้น

บทสรุป

คลาสข้อมูล Pydantic ผสานรวมวิธีที่เราจัดการกับข้อมูล รับประกันว่าข้อมูลมีความถูกต้องและตรงตามโครงสร้างที่ต้องการ ส่งผลให้มีข้อผิดพลาดน้อยลงและมีการใช้งานที่ไร้ที่ติมากขึ้น ด้วย Pydantic นักพัฒนาสามารถทุ่มเทความพยายามในการสร้างแอปที่ทำงานได้ดีโดยไม่ต้องกังวลกับปัญหาข้อมูล ลองนึกถึงการมีตัวจัดการงานเฉพาะสำหรับการจัดการข้อมูลเท่านั้น เพื่อให้มั่นใจว่าทุกอย่างทำงานได้อย่างราบรื่นตั้งแต่ต้นจนจบ