2012-01-02 13 views
10

का उपयोग करके मैं पाइथन में अलमारियों/डेटाबेस पर थोड़ी सी सलाह लेने की उम्मीद कर रहा हूं।पायथन शेल्व क्रॉस-प्लेटफार्म

समस्या: मैं एक डेटाबेस पर मैक बनाया है, कि मैं खिड़कियों 7. मैं अजगर 3.2, MacOS 10.7 का उपयोग पर उपयोग करना चाहते हैं, और जीतने के लिए 7.

जब मैं खोलने के लिए और पर मैक मेरी टांड़ बचाने सब अच्छा और अच्छा है। मुझे एक ".db" एक्सटेंशन वाली फ़ाइल मिलती है। मेरे विंडोज़-पायथन पर यह पहचाना नहीं गया है। हालांकि मैं पीसी पर एक नया डीबी बना सकता हूं और ".bak, dat, .dir" एक्सटेंशन के साथ फाइलें प्राप्त कर सकता हूं।

मुझे लगता है कि पीसी पर पाइथन में एक ही अंतर्निहित डेटाबेस नहीं है जो मेरा मैक-पायथन उपयोग करता है?

मुझे यकीन है कि जो यहाँ सही दृष्टिकोण है नहीं कर रहा हूँ, लेकिन शायद मैं कर सकता:

बदलें डिफ़ॉल्ट-db है कि मेरे प्रणाली का उपयोग करता है? पता लगाएं कि मेरा मैक-पायथन किस डीबी का उपयोग करता है और उसे पीसी पर जोड़ता है? जिस तरह से मैं अपना डेटा सभी एक साथ स्टोर करता हूं उसे बदलें?

गति कोई मुद्दा नहीं है, डेटासाइज कुछ मेगाबाइट्स है, और इसे अक्सर एक्सेस नहीं किया जाता है।

आशा है कि वहां एक सहायक हाथ ढूंढने की उम्मीद है। अग्रिम धन्यवाद - किसी भी मदद की बहुत सराहना की है।

/Esben

मैं क्या कर रहा हूँ:

Import shelve 
db = shelve.open('mydb') 
entries = db['list'] 
db.close 

यह बहुत सीधे आगे, मैं एक काम कर db-फ़ाइल कहा जाता है कि "mydb.db" पर मैक लेकिन इसे खोलने के लिए जब मैं कोशिश पीसी-अजगर पर मैं मिलता है:

Traceback (सबसे हाल कॉल पिछले): फ़ाइल "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/dbm/ init .py" , लाइन 107, जिसमें डीडीबी f = io.open (फ़ाइल नाम + ".pag", "आरबी") IOError: [Errno 2] ऐसी कोई फ़ाइल या निर्देशिका नहीं: 'mydb.pag'

+0

जब आप कहते हैं कि यह विंडोज पर पहचाना नहीं गया है तो आपका क्या मतलब है? आप फ़ाइल को खोलने की कोशिश कैसे कर रहे हैं? क्या आप कुछ उदाहरण कोड दिखा सकते हैं? –

उत्तर

1

sqlite3 मॉड्यूल एक क्रॉस प्लेटफ़ॉर्म मॉड्यूल है जो यहां तक ​​कि समर्थित है कई अन्य भाषाओं और उपकरणों द्वारा।

अचार मॉड्यूल सरल है, लेकिन प्लेटफार्म भी पार है। आप इसे एक ऑब्जेक्ट देते हैं और यह इसे फ़ाइल में डंप करता है। स्क्लाइट की तरह कोई सारणी या पंक्तियां नहीं।

+0

अचार शायद जाने का रास्ता है। मुझे बस इसे एक फाइल में रखने का विचार पसंद आया। क्या पाइथन को अलमारियों के लिए एक विशिष्ट डीबी का उपयोग करने के लिए मजबूर करना संभव नहीं है, जो कि क्रॉस प्लेटफ़ॉर्म है? – Esben

+1

शेल्व पहले ही हुड के नीचे पिकलिंग का उपयोग करता है। –

+0

ठीक है, इसलिए मैं शायद उसी समस्या में भाग जाऊंगा .. – Esben

2

आपके उत्तर के लिए धन्यवाद!

मुझे लगता है कि पाइथन में अलमारियों को आसानी से एक विशिष्ट डीबी का उपयोग करने के लिए मजबूर नहीं किया जाता है, हालांकि अचार एक आकर्षण की तरह काम करता है। कम से कम मैक ओएस -> विंडोज 7.

तो संक्षिप्त उत्तर: यदि आप पोर्टेबिलिटी चाहते हैं, तो अलमारियों का उपयोग न करें, सीधे अचार का उपयोग करें।

/एस्बेन

+0

हाँ अचार की तरह अचार अचार, मुझे भी वही अनुभव था ... –

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