Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python ऑब्जेक्ट पर्सिस्टेंस (shelve)

Python की स्टैंडर्ड लाइब्रेरी में shelve मॉड्यूल एक सरल लेकिन प्रभावी टूल है जब रिलेशनल डेटाबेस समाधान की आवश्यकता न हो तो पर्सिस्टेंट डेटा स्टोरेज के लिए। इस मॉड्यूल में डिफाइन shelf ऑब्जेक्ट एक डिक्शनरी-जैसा ऑब्जेक्ट है जो डिस्क फ़ाइल में स्थायी रूप से स्टोर होता है। यह UNIX जैसे सिस्टम पर dbm डेटाबेस के समान फ़ाइल बनाता है। केवल स्ट्रिंग डेटा टाइप को इस विशेष डिक्शनरी ऑब्जेक्ट में कुंजी के रूप में उपयोग किया जा सकता है, जबकि कोई भी पिक्लेबल ऑब्जेक्ट वैल्यू के रूप में काम कर सकता है।

shelve मॉड्यूल निम्न तीन क्लासेज डिफाइन करता है:

क्र.सं.मॉड्यूल और विवरण
1Shelf
शेल्फ इम्प्लीमेंटेशन के लिए बेस क्लास। इसे डिक्ट-जैसे ऑब्जेक्ट से इनिशियलाइज़ किया जाता है।
2BsdDbShelf
यह Shelf क्लास का सबक्लास है। इसके कंस्ट्रक्टर को पास किया गया डिक्ट ऑब्जेक्ट first(), next(), previous(), last() और set_location() मेथड्स को सपोर्ट करना चाहिए।
3DbfilenameShelf
यह भी Shelf का सबक्लास है लेकिन इसके कंस्ट्रक्टर के लिए डिक्ट ऑब्जेक्ट के बजाय फ़ाइलनाम पैरामीटर स्वीकार करता है।

शेल्फ ऑब्जेक्ट बनाने का सबसे आसान तरीका shelve मॉड्यूल में डिफाइन open() फ़ंक्शन का उपयोग करना है जो DbfilenameShelf ऑब्जेक्ट लौटाता है।

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

filename पैरामीटर बने डेटाबेस को असाइन किया जाता है।

flag पैरामीटर का डिफ़ॉल्ट मान रीड/राइट एक्सेस के लिए 'c' है। अन्य फ्लैग्स हैं 'w' (केवल राइट), 'r' (केवल रीड) और 'n' (रीड/राइट के साथ नया)।

protocol पैरामीटर पिकल प्रोटोकॉल को दर्शाता है। writeback पैरामीटर डिफ़ॉल्ट रूप से false है। यदि true पर सेट किया जाए, तो एक्सेस की गई एंट्रीज़ कैश की जाती हैं। हर एक्सेस sync() और close() ऑपरेशन कॉल करता है इसलिए प्रक्रिया धीमी हो सकती है।

निम्न कोड डेटाबेस बनाता है और इसमें डिक्शनरी एंट्रीज़ स्टोर करता है:

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

यह करंट डायरेक्टरी में test.dir फ़ाइल बनाएगा और की-वैल्यू डेटा को हैश्ड रूप में स्टोर करेगा। Shelf ऑब्जेक्ट में निम्न मेथड्स उपलब्ध हैं:

क्र.सं.मेथड और विवरण
1close()
पर्सिस्टेंट डिक्ट ऑब्जेक्ट को सिंक्रोनाइज़ और बंद करता है।
2sync()
यदि शेल्फ को writeback True के साथ खोला गया था तो कैश में सभी एंट्रीज़ को वापस लिखता है।
3get()
कुंजी से जुड़ा मान लौटाता है।
4items()
टपल्स की सूची - प्रत्येक टपल की-वैल्यू पेयर है।
5keys()
शेल्फ कीज़ की सूची।
6pop()
निर्दिष्ट कुंजी को हटाता है और संबंधित मान लौटाता है।
7update()
दूसरे डिक्ट/इटरेबल से शेल्फ अपडेट करता है।
8values()
शेल्फ वैल्यूज़ की सूची।

शेल्फ में किसी विशेष कुंजी के मान तक पहुंचने के लिए:

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

items(), keys() और values() मेथड्स व्यू ऑब्जेक्ट्स लौटाते हैं।

>>> 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)]

ध्यान दें कि marks-75 की-वैल्यू पेयर हटा दिया गया है।

दूसरे डिक्शनरी के आइटम्स को शेल्फ के साथ मर्ज करने के लिए update() मेथड का उपयोग करें:

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

इस लेख में हमने shelve मॉड्यूल के बारे में सीखा जो पर्सिस्टेंट डिक्शनरी ऑब्जेक्ट स्टोर करने के लिए सुविधाजनक तंत्र प्रदान करता है।

  1. पायथन ऑब्जेक्ट तुलना:  is  बनाम  == पायथन ऑब्जेक्ट तुलना: "is" बनाम "=="

    इस लेख में हम ऑब्जेक्ट तुलना यानी is ऑपरेटर और समानता ऑपरेटर == के बीच अंतर के बारे में जानेंगे। समानता ऑपरेटर पास किए गए आर्गुमेंट के मान पर काम करता है जबकि is ऑपरेटर पास किए गए दो ऑब्जेक्ट्स के रेफरेंस की तुलना करता है। समानता ऑपरेटर के मामले में आर्गुमेंट की सामग्री की तुलना की जाती है, उनके रेफ

  1. - Python में ऑब्जेक्ट को कैसे नष्ट करें?

    एक क्लास स्पेशल मेथड __del__() को लागू करती है, जिसे डिस्ट्रक्टर कहा जाता है, जिसे तब इनवोक किया जाता है जब इंस्टेंस नष्ट होने वाला होता है। यह मेथड किसी इंस्टेंस द्वारा उपयोग किए जाने वाले नॉन-मेमोरी रिसोर्सेज को साफ करने के लिए उपयोग किया जा सकता है। उदाहरण यह __del__() डिस्ट्रक्टर उस इंस्टेंस का

  1. - पायथन में टाइमटपल क्या है?

    datetime.date इंस्टेंसेज का timetuple() मेथड time.struct_time टाइप का ऑब्जेक्ट लौटाता है। struct_time एक नेम्ड टपल ऑब्जेक्ट है (एक नेम्ड टपल ऑब्जेक्ट में एट्रिब्यूट्स होते हैं जिन्हें इंडेक्स या नाम से एक्सेस किया जा सकता है)। struct_time ऑब्जेक्ट में डेट और टाइम फील्ड्स दोनों को दर्शाने के लिए एट