Python 基础数据存储

4 投票
7 回答
32561 浏览
提问于 2025-04-16 01:28

我需要存储一些基本信息,包括客户和他们购买的汽车,以及这些汽车的付款计划。这些数据是通过一个用Python写的图形界面(GUI)收集的。因为我对使用像SQL这样的数据库系统不太熟悉,所以我想把数据存储在一个普通的文本文件里。而且这些数据不需要在线访问。

为了能够搜索和过滤这些数据,我首先把我的数据(就是一个列表的列表)转换成字符串,然后在需要的时候再把它转换回普通的Python列表格式。我知道这样做有点粗暴,但这样做安全吗?或者你能给我推荐其他的方法吗?

7 个回答

5

我同意其他人的看法,重要的数据用某种轻量级的数据库会更安全,但我也理解想要保持简单和透明的愿望。

所以,我建议你不要自己发明一种基于文本的数据格式,而是使用YAML

这种格式是人类可读的,比如:

List of things:
    - Alice
    - Bob
    - Evan

你可以这样加载文件:

>>> import yaml
>>> file = open('test.yaml', 'r')
>>> list = yaml.load(file)

然后列表看起来会是这样的:

{'List of things': ['Alice', 'Bob', 'Evan']}

当然,你也可以反向操作,把数据保存到YAML中,文档会帮助你完成这个。

至少这是另一个可以考虑的选择 :)

5

使用pickle的答案不错,但我个人更喜欢shelve。它可以让你在程序重新启动时保持变量的状态不变,我觉得用起来比直接使用pickle更简单。http://docs.python.org/library/shelve.html

7

把数据库保存成文本格式(或者用pickle之类的方式)是很不安全的。这是因为在保存数据的时候可能会出现问题,导致数据损坏。而且,数据被盗的风险也很大。

随着你的数据集越来越大,性能可能会受到影响。

可以看看sqlite(或者sqlite3),它比mysql小,而且更容易管理。除非你的数据集非常小,可以放进一个文本文件里。

另外,使用berkeley db在python中很简单,你不需要学习所有数据库的知识,只需导入bsddb就可以了。

撰写回答