पायथन डेटा दृढ़ता - शेल्व मॉड्यूल
पायथन के मानक पुस्तकालय में शेल्व मॉड्यूल सरल अभी तक प्रभावी वस्तु दृढ़ता तंत्र प्रदान करता है। इस मॉड्यूल में परिभाषित शेल्फ ऑब्जेक्ट डिक्शनरी जैसी वस्तु है जो लगातार एक डिस्क फ़ाइल में संग्रहीत होती है। यह सिस्टम की तरह UNIX पर dbm डेटाबेस के समान फाइल बनाता है।
शेल्फ शब्दकोश में कुछ प्रतिबंध हैं। इस विशेष डिक्शनरी ऑब्जेक्ट में केवल स्ट्रिंग डेटा प्रकार को कुंजी के रूप में उपयोग किया जा सकता है, जबकि किसी भी पिकलबल पायथन ऑब्जेक्ट को मूल्य के रूप में उपयोग किया जा सकता है।
शेल्व मॉड्यूल तीन वर्गों को परिभाषित करता है -
अनु क्रमांक | शेल्व मॉड्यूल और विवरण |
---|---|
1 | Shelf यह शेल्फ कार्यान्वयन के लिए आधार वर्ग है। यह तानाशाही जैसी वस्तु से आरंभ किया जाता है। |
2 | BsdDbShelf यह शेल्फ क्लास का एक उपवर्ग है। इसके निर्माता को दी गई प्रमुख वस्तु को पहले (), अगला (), पिछला (), अंतिम () और सेट_लोकेशन () विधियों का समर्थन करना चाहिए। |
3 | DbfilenameShelf यह भी शेल्फ का एक उपवर्ग है, लेकिन इसके निर्माण के लिए एक पैरामीटर के रूप में एक फ़ाइलनाम को स्वीकार करता है, न कि प्रमुख वस्तु के बजाय। |
शेल्व मॉड्यूल में परिभाषित खुला () फ़ंक्शन जो वापस लौटाता है DbfilenameShelf वस्तु।
open(filename, flag='c', protocol=None, writeback=False)
फ़ाइलनाम पैरामीटर को बनाए गए डेटाबेस को सौंपा गया है। ध्वज पैरामीटर के लिए डिफ़ॉल्ट मान रीड / राइट एक्सेस के लिए 'c' है। अन्य झंडे 'डब्ल्यू' (केवल लिखें) 'आर' (केवल पढ़ने के लिए) और 'एन' (पढ़ने / लिखने के साथ नए) हैं।
धारावाहिकीकरण ही अचार प्रोटोकॉल द्वारा शासित होता है, डिफ़ॉल्ट रूप से कोई भी नहीं है। डिफ़ॉल्ट रूप से अंतिम पैरामीटर राइटबैक पैरामीटर गलत है। यदि सही पर सेट किया गया है, तो एक्सेस की गई प्रविष्टियों को कैश किया गया है। हर एक्सेस कॉल सिंक () और क्लोज़ () ऑपरेशंस, इसलिए प्रोसेस धीमा हो सकता है।
निम्नलिखित कोड एक डेटाबेस बनाता है और इसमें शब्दकोश प्रविष्टियां संग्रहीत करता है।
import shelve
s=shelve.open("test")
s['name']="Ajay"
s['age']=23
s['marks']=75
s.close()
यह वर्तमान निर्देशिका में test.dir फ़ाइल बनाएगा और हैश रूप में कुंजी-मूल्य डेटा संग्रहीत करेगा। शेल्फ ऑब्जेक्ट में निम्नलिखित तरीके उपलब्ध हैं -
अनु क्रमांक। | तरीके और विवरण |
---|---|
1 | close() सिंक्रनाइज़ और लगातार तानाशाही वस्तु को बंद करें। |
2 | sync() कैश में सभी प्रविष्टियाँ वापस लिखें, यदि शेल्फ को ट्रूबैक सेट ट्रू के साथ खोला गया था। |
3 | get() कुंजी के साथ जुड़ा हुआ मान लौटाता है |
4 | items() tuples की सूची - प्रत्येक tuple कुंजी मूल्य युग्म है |
5 | keys() शेल्फ कुंजी की सूची |
6 | pop() निर्दिष्ट कुंजी निकालें और संबंधित मान लौटाएं। |
7 | update() अन्य तानाशाह / पुनरावृत्ति से शेल्फ को अपडेट करें |
8 | values() शेल्फ मूल्यों की सूची |
शेल्फ में एक विशेष कुंजी के मूल्य तक पहुँचने के लिए -
s=shelve.open('test')
print (s['age']) #this will print 23
s['age']=25
print (s.get('age')) #this will print 25
s.pop('marks') #this will remove corresponding k-v pair
एक अंतर्निहित शब्दकोश वस्तु के रूप में, आइटम (), कुंजियाँ () और मान () विधियाँ दृश्य वस्तुओं को वापस करती हैं।
print (list(s.items()))
[('name', 'Ajay'), ('age', 25), ('marks', 75)]
print (list(s.keys()))
['name', 'age', 'marks']
print (list(s.values()))
['Ajay', 25, 75]
शेल्फ उपयोग अपडेट () विधि के साथ किसी अन्य शब्दकोश की वस्तुओं को मर्ज करने के लिए।
d={'salary':10000, 'designation':'manager'}
s.update(d)
print (list(s.items()))
[('name', 'Ajay'), ('age', 25), ('salary', 10000), ('designation', 'manager')]