Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การคงอยู่ของวัตถุ Python (ชั้นวาง)


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

โมดูลชั้นวางกำหนดสามคลาสดังนี้ −

ซีเนียร์ โมดูล &คำอธิบาย
1 ชั้นวางของ
นี่คือคลาสพื้นฐานสำหรับการใช้งานชั้นวาง มันถูกเริ่มต้นด้วยวัตถุที่เหมือน dict
2 BsdDbShelf
นี่คือคลาสย่อยของคลาสชั้นวาง ออบเจ็กต์ dict ที่ส่งผ่านไปยังคอนสตรัคเตอร์ต้องรองรับเมธอด first(), next(), Previous(), last() และ set_location()
3 DbfilenameShelf
นี่เป็นคลาสย่อยของ Shelf แต่ยอมรับชื่อไฟล์เป็นพารามิเตอร์สำหรับตัวสร้างแทนที่จะเป็นอ็อบเจกต์ dict

วิธีที่ง่ายที่สุดในการสร้างวัตถุชั้นวางคือการใช้ฟังก์ชัน open() ที่กำหนดไว้ในโมดูล shelve ซึ่งส่งคืนวัตถุ DbfilenameShelf

open(filename, flag = 'c', protocol=None, writeback = False)

พารามิเตอร์ชื่อไฟล์ถูกกำหนดให้กับฐานข้อมูลที่สร้างขึ้น

ค่าเริ่มต้นสำหรับพารามิเตอร์แฟล็กคือ 'c' สำหรับการเข้าถึงแบบอ่าน/เขียน แฟล็กอื่นๆ คือ 'w' (เขียนเท่านั้น) 'r' (อ่านอย่างเดียว) และ 'n' (ใหม่พร้อมการอ่าน/เขียน)

พารามิเตอร์โปรโตคอลแสดงถึงพารามิเตอร์การเขียนกลับของโปรโตคอล pickle โดยค่าเริ่มต้นเป็นเท็จ หากตั้งค่าเป็น true รายการเข้าถึงจะถูกแคช ทุกการเข้าถึงเรียก sync() และ close() การดำเนินการจึงอาจช้า

รหัสต่อไปนี้สร้างฐานข้อมูลและจัดเก็บรายการพจนานุกรมในนั้น

import shelve
s = shelve.open("test")
s['name'] = "Ajay"
s['age'] = 23
s['marks'] = 75
s.close()

สิ่งนี้จะสร้างไฟล์ test.dir ในไดเร็กทอรีปัจจุบันและเก็บข้อมูลคีย์-ค่าในรูปแบบที่แฮช วัตถุชั้นวางมีวิธีการดังต่อไปนี้ -

ซีเนียร์ วิธีการ &คำอธิบาย
1 ปิด()
ประสานและปิดวัตถุ dict ถาวร
2 ซิงค์()
เขียนกลับรายการทั้งหมดในแคชหากชั้นวางเปิดโดยตั้งค่าการเขียนกลับเป็น True
3 get()
ส่งคืนค่าที่เกี่ยวข้องกับคีย์
4 รายการ()
รายการทูเพิล – ทูเพิลแต่ละตัวเป็นคู่ของค่าคีย์
5 คีย์()
รายการกุญแจชั้นวาง
6 ป๊อป()
ลบคีย์ที่ระบุและคืนค่าที่เกี่ยวข้อง
7 อัปเดต()
อัปเดตชั้นวางจาก dict/iterable อื่น
8 values()
รายการค่าชั้นวาง

เพื่อเข้าถึงค่าของคีย์เฉพาะในชั้นวาง

>>> s=shelve.open('test')
>>> s['age']
23
>>> s['age']=25
>>> s.get('age')
25

รายการ (), คีย์ () และค่า () วิธีการส่งคืนอ็อบเจ็กต์มุมมอง

>>> list(s.items())
[('name', 'Ajay'), ('age', 25), ('marks', 75)]
>>> list(s.keys())
['name', 'age', 'marks']
>>> list(s.values())
['Ajay', 25, 75]

วิธีลบคู่คีย์-ค่าออกจากชั้นวาง

>>> s.pop('marks')
75
>>> list(s.items())
[('name', 'Ajay'), ('age', 25)]

สังเกตว่าคู่คีย์-ค่าของเครื่องหมาย-75 ถูกลบออก

การรวมรายการของพจนานุกรมอื่นด้วยชั้นใช้ update() วิธีการ

>>> d={'salary':10000, 'designation':'manager'}
>>> s.update(d)
>>> list(s.items())
[('name', 'Ajay'), ('age', 25), ('salary', 10000), ('designation', 'manager')]

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