我可以在Mac OS X上为Python开发的GUI应用程序保存sqlite数据库



我正在使用PyQt+Python开发一个GUI Mac OS X应用程序,该应用程序将通过Mac App Store分发。(遗憾的是,我现在没有Objective-C技能。)

应用程序使用sqlite数据库来保存用户输入,并在以后的特定时间从sqlite数据库中读取。这意味着我的应用程序需要sqlite数据库是可读/可写的。

在提交到Mac App Store之前,目前我的应用程序在我的MacBook Pro上运行良好(我目前与其他应用程序文件依赖关系保持在相同的位置)。

因为我知道苹果的沙箱不允许应用程序读取/写入数据(在我的情况下,这意味着sqlite数据库)任意。

我的问题是:

因为我使用PyQt &Python开发应用程序,在哪里以及如何在安装时通过代码复制/保存sqlite数据库?

如果我将我的程序打包到"myapp. exe"文件中。app"文件(使用py2app或cxFreeze实用程序),我应该把一个初始的sqlite数据库在"资源"文件夹的应用程序包?如果是这样,我怎么能得到沙箱允许的位置,并将数据库表单"资源"文件夹复制到沙箱允许的位置,以便在我的python代码中读取/写入?

我在网上搜索了很多,因为我不是Objective-C开发人员,我对所有用Objective-C编写的示例感到困惑。这个任务可以在Python中完成,而不需要从Cocoa/Objective-C或其他东西调用API ?

我对Mac OS X开发很陌生,所以我的问题可能很愚蠢,抱歉。谢谢你。

我已经自己解决了这个问题。

我所做的是在我的app bundle的Resource文件夹中放置一个初始的sqlite数据库,然后通过代码将其复制到预定义的路径,即:

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

,然后苹果的沙箱会把它放在正确的文件夹。

好消息是我的应用Events被Apple批准了。你可以在Mac App Store找到它的名字:Events

您可以使用QSettings来管理各种场景(包括用户输入)的跨平台设置存储。这有帮助吗?

最新更新