2012-01-02 89 views
10

我希望對Python中的書架/數據庫有一點建議。使用python擱置跨平臺

問題:我有在mac上創建的數據庫,我想在Windows 7上我使用Python 3.2,MacOS的10.7使用,並贏得7

當我打開並保存在Mac上我的貨架一切都很好。我得到一個帶有「.db」擴展名的文件。在我的Windows-python中,它不被識別。然而,我可以在PC上創建一個新的數據庫,並獲取帶有「.bak,dat,.dir」擴展名的文件。

我猜測,PC上的python沒有相同的基礎數據庫,我的mac-python使用?

我不知道這是這裏的正確的做法,但也許我可以:

更改我的系統使用的默認數據庫? 找出我的Mac-python使用哪個數據庫並將其添加到PC上? 改變我將數據存儲在一起的方式?

速度不是問題,數據大小是幾兆字節,並且不經常訪問。

希望能在那裏找到幫手。在此先感謝 - 任何幫助非常感謝。

/Esben

我在做什麼:

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

它是非常簡單的,我已經叫「mydb.db」的工作DB文件在Mac上,但是當我嘗試打開它在PC上的Python,我得到:

回溯(最後最近一次調用): 文件 「/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/dbm/ 初始化 py」 爲,第107行,其中db fError:[Errno 2]沒有這樣的文件或目錄:'mydb.pag'

+0

你是什麼意思,當你說它不被Windows識別?你打算如何打開文件?你能展示一些示例代碼嗎? – 2012-01-02 20:07:22

回答

1

sqlite3模塊是一個跨平臺的模塊,甚至支持通過許多其他語言和工具。

泡菜模塊更簡單,也是跨平臺。你給它一個對象並將它轉儲到一個文件中。沒有像sqlite這樣的表或行。

+0

泡菜可能是要走的路。我只是喜歡把它全部放在一個文件中的想法。 是不是可以強制Python使用特定的數據庫作爲擱置,即跨平臺? – Esben 2012-01-02 20:04:18

+1

擱架已經在引擎蓋下使用酸洗。 – 2012-01-02 20:10:00

+0

好的,所以我可能會遇到同樣的問題,然後.. – Esben 2012-01-02 20:20:46

2

謝謝您的回覆!

我似乎在Python中的貨架不容易被迫使用特定的數據庫,但是泡菜就像一個魅力。至少從mac os - > windows 7.

所以簡短的回答:如果你想要可移植性,不要使用架子,直接使用泡菜。

/Esben

+0

是泡菜像魅力一樣工作,我也有同樣的經歷... – 2012-11-14 15:24:43