2013-05-17 53 views
1

我正在開發一個使用PyQt + Python的GUI Mac OS X應用程序,它將通過Mac App Store分發。 (不幸的是,我現在沒有Objective-C技能。)我在哪裏可以在Mac OS X上爲Python開發的GUI應用程序保存sqlite數據庫?

該應用程序利用sqlite數據庫來保存用戶輸入,並在稍後的特定時間從sqlite數據庫讀取。這意味着我的應用程序需要sqlite數據庫可讀/寫。

在提交到Mac App Store之前,我的應用程序在我的MacBook Pro上運行良好(我目前與其他應用程序文件依賴關係保持在同一位置)。

因爲我知道蘋果的沙盒不會允許應用程序讀/寫數據(在我的情況下,這意味着sqlite數據庫)的任意。

我的問題是:

由於我使用的PyQt & Python來開發應用程序,在那裏,我怎麼可以複製/保存SQLite的DATEBASE的代碼,同時安裝?

如果我將程序打包到「myapp.app」文件(使用py2app或cxFreeze實用程序),我應該在應用程序包的「Resources」文件夾中放置一個初始sqlite數據庫嗎?如果是這樣,我如何獲得沙箱允許的位置並將數據庫表單「Resources」文件夾複製到允許在我的Python代碼中讀/寫的沙箱允許的位置?

我在網上搜索了很多,因爲我不是一個Objective-C開發人員,我對所有用Objective-C編寫的例子感到困惑。這個任務可以在Python中完成,而無需從Cocoa/Objective-C或其他東西調用API?

我對Mac OS X的開發很新,所以我的問題可能是愚蠢的,對不起。 謝謝。

回答

1

我自己解決了這個問題。

我所做的就是發生在我的應用程序包的資源文件夾中的初始SQLite數據庫,然後通過代碼複製到一個預定義的路徑這是:

os.path.expanduser("~/com.company.AppName/data/Documents/")

那麼蘋果的沙箱會把它放在正確的文件夾中。

好消息是我的應用程序事件得到了Apple的批准。 您可能會喜歡Mac App Store上的名字:Events

0

您使用QSettings來管理多種場景(包括用戶輸入)的設置的跨平臺存儲。這會有幫助嗎?

+0

感謝您的回覆。但我的情況不適合使用QSettings。我保存/讀取/寫入的數據有點複雜,需要幾個表格,很多列......等等。據我所知,像sqlite這樣的數據庫是比QSettings更好的選擇。所以。無論如何,謝謝你們。 – handsomegui

+0

我自己解決了這個問題。我所做的是將一個初始的sqlite數據庫放在我的應用程序包的Res​​ource文件夾中,然後通過代碼將其複製到預定義的路徑中:os.path.expanduser(「〜/ com.company.AppName/data/Documents/「),那麼蘋果的沙箱將把它放在正確的文件夾中。好消息是蘋果批准了我的應用程序。您可以在Mac App Store上以名稱找到它:事件。 – handsomegui

相關問題