Где я могу сохранить базу данных sqlite в Mac OS X для разработанного на Python приложения с графическим интерфейсом?

Я разрабатываю приложение Mac OS X с графическим интерфейсом, используя PyQt + Python, которое будет распространяться через Mac App Store. (К сожалению, пока у меня нет навыков работы с Objective-C.)

Приложение использует базу данных sqlite для сохранения вводимых пользователем данных и последующего чтения из базы данных sqlite в определенное время. Это означает, что моему приложению требуется, чтобы база данных sqlite была доступна для чтения/записи.

Перед отправкой в ​​​​Mac App Store прямо сейчас мое приложение хорошо работает на моем MacBook Pro (который я в настоящее время храню в том же месте, что и остальные зависимости файлов приложения).

Поскольку я знаю, что песочница Apple не позволит приложениям читать/записывать данные (в моем случае это означает базу данных sqlite) произвольно.

Мой вопрос:

Поскольку я использую PyQt и Python для разработки приложения, где и как я могу скопировать/сохранить базу данных sqlite по коду при установке?

Если я упакую свою программу в файл «myapp.app» (используя утилиты py2app или cxFreeze), должен ли я поместить исходную базу данных sqlite в папку «Ресурсы» пакета приложений? Если да, то как я могу получить разрешенное местоположение для песочницы и скопировать папку «Ресурсы» формы базы данных в разрешенное место для песочницы для чтения/записи в моем коде Python?

Я много ищу в Интернете, так как я не разработчик Objective-C, меня смущают все примеры, написанные на Objective-C. Можно ли выполнить эту задачу на Python без вызова API из Cocoa/Objective-C или чего-то еще?

Я новичок в разработке Mac OS X, поэтому мой вопрос может быть глупым, извините за это. Спасибо.


person handsomegui    schedule 17.05.2013    source источник


Ответы (2)


Я исправил эту проблему самостоятельно.

Что я сделал, так это поместил начальную базу данных sqlite в папку Resource моего пакета приложений, а затем скопировал ее с помощью кода по предопределенному пути, который был:

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

тогда песочница Apple поместит его в нужную папку.

Хорошей новостью является то, что мое приложение Events одобрено Apple. Вы можете найти его в Mac App Store под названием: События

person handsomegui    schedule 27.05.2013

Вы используете QSettings для управления межплатформенным хранилищем настроек для множества сценариев, включая пользовательский ввод. Это поможет?

person Community    schedule 17.05.2013
comment
Спасибо за ответ. Но мой случай не подходил для использования QSettings. Данные, которые я сохраняю/читаю/записываю, были немного сложными, для чего требовалось несколько таблиц, множество столбцов... и т. д. Насколько я понимаю, база данных, такая как sqlite, является гораздо более хорошим выбором, чем QSettings. Так. В любом случае, спасибо вам все равно. - person handsomegui; 17.05.2013
comment
Я сам исправил этот вопрос. Что я делаю, так это помещаю исходную базу данных sqlite в папку ресурсов моего пакета приложений, а затем копирую ее по коду в предопределенный путь, который был: os.path.expanduser(~/com.company.AppName/data/Documents/) , тогда песочница Apple поместит его в нужную папку. Хорошая новость: Apple одобрила мое приложение. Вы можете найти его в Mac App Store под названием Events. - person handsomegui; 27.05.2013