2013-04-26 5 views
5

shelve मॉड्यूल anydbm मॉड्यूल के शीर्ष पर लागू किया गया है। इस मॉड्यूल 4 अलग विशिष्ट डी बी एम कार्यान्वयन के लिए एक बहाना रूप में कार्य करता है, और जब एक नया डेटाबेस बनाने, निम्न क्रम में यह पहला मॉड्यूल उपलब्ध ले जाएगा:मैं नया डेटाबेस बनाने के लिए pumbthon dumbdbm मॉड्यूल का उपयोग करने के लिए कैसे मजबूर कर सकता हूं?

  • dbhash (हटा दिया गया है लेकिन अभी भी पहले anydbm पसंद)। यह bsddb मॉड्यूल के लिए प्रॉक्सी है, .open() वास्तव में bsddb.hashopen()

  • gdbm है, जीएनयू डी बी एम पुस्तकालय के लिए पायथन मॉड्यूल, dbm मॉड्यूल जब यह एक ही पुस्तकालय के साथ प्रयोग किया पेशकश कर सकते हैं की तुलना में अधिक कार्यक्षमता की पेशकश की।

  • dbm, का उपयोग कर एक प्रॉक्सी मॉड्यूल या तो ndbm, बीएसडी DB और जीएनयू डी बी एम पुस्तकालयों (चुना जब अजगर संकलित किया गया है)।

  • dumbdbm, एक शुद्ध पायथन कार्यान्वयन।

लेकिन अपने सिस्टम में हालांकि मैं किसी कारण मैं यह सिर्फ dumbdbm साथ डाटाबेस बनाना चाहते हैं के लिए dbhash है।

मैं इसे कैसे प्राप्त कर सकता हूं?

+0

ब्याज से, आप ऐसा क्यों करना चाहते हैं? –

+0

मैं एक सिस्टम जैसा दिखने की कोशिश कर रहा हूं। बेस सिस्टम एक डीबी फ़ाइल बनाता है जो dumbdbm का उपयोग करता है और फिर उस फ़ाइल को किसी अन्य प्रोग्राम में इनपुट के रूप में उपयोग करता है। अगर मैं किसी अन्य डीबी का उपयोग करता हूं तो मुझे नई फाइल को ठीक से पढ़ने के लिए अन्य प्रोग्राम को बदलना होगा और हम कोड को तब तक नहीं बदल सकते हैं जब तक हम कर सकते हैं। –

+0

विंडोज़ पर केवल dumbdbm उपलब्ध है। यदि आप लिनक्स और विंडोज के बीच 'शेल्व' फ़ाइलों को स्थानांतरित करना चाहते हैं, तो उन्हें dumbdbm प्रारूप का उपयोग करना होगा। –

उत्तर

5

आप नियंत्रित नहीं कर सकते कि डीबी मॉड्यूल shelve.open उपयोग करता है, लेकिन कामकाज हैं।

सबसे अच्छा db खुद के बनाने के लिए और the Shelf constructor को इसे मैन्युअल रूप से गुजरती हैं, बजाय shelve.open बुलाने की आम तौर पर है:

db = dumbdbm.open('mydb') 
shelf = shelve.Shelf(db) 

पहले पैरामीटर किसी भी वस्तु है कि एक dict तरह इंटरफेस है कि तार स्टोर कर सकते हैं प्रदान करता है, जो वास्तव में *dbm ऑब्जेक्ट है।

संबंधित मुद्दे

 संबंधित मुद्दे