独立python应用程序的数据存储

时间:2019-01-23 10:03:26

标签: python database pickle python-standalone

我想制作一个python程序(带有PyQt GUI,但我不知道这是否相关),即使程序关闭,该程序也必须保存一些我想存储的信息。我要存储的信息的示例:

  1. 用户可以在文件对话框窗口中搜索文件。我想在以前使用的目录中启动文件对话框窗口,即使程序在两次文件搜索之间都已关闭。

  2. 用户可以输入自己的类别来对项目进行排序,以我的一些预定义类别为基础。这些新类别应该在程序下次启动时可用。

现在,我想知道存储此类信息的正确方法是什么。我应该用泡菜吗?一个合适的数据库(我知道一点点sqlite3,但必须对此进行阅读)?我自己解析的一个简单文本文件?像示例1中一样处理数据,而对于示例2中一样处理数据。

此外,无论我用什么方式存储文件,我都将该文件放在哪里?

我在上下文中询问,我以后可能想让我的程序作为独立的应用程序(使用py2app,py2exe或PyInstaller)供其他人使用。

现在,我只是将一个pickle文件保存在我的.py文件所在的目录中,例如this answer推荐,但答案还特别提到:

  

对于个人项目,可能就足够了。

(重点是我的)

如果我想让程序作为独立的应用程序提供给其他人,是否也使用pickle也是“适当,专业”的方式?

2 个答案:

答案 0 :(得分:1)

如摩尔多瓦所说,我认为在这种情况下,SQLite3是更好的解决方案。

泡菜有问题,有时可以在python版本之间更改酸洗格式,并且使用sqlite3有更大的优势。

答案 1 :(得分:1)

选择取决于您存储数据的方式,这是您自己的方式?

  • 用户应该能够在不使用我的程序的情况下进行更改
  • 应防止用户使用我程序以外的程序对其进行更改

如果首先,您可以考虑部署 JSON 开放标准文件格式,Python已为此文件准备了名为json的库。实际上,您会得到可读的文本(可以保存到文件中),并且可以在文本编辑器中对其进行编辑。还有一些JSON文件查看器和编辑器,它们使JSON文件的查看/编辑更加容易。