使用 Python 进行基本数据存储

50 阅读4分钟

在实际项目开发中,我们经常需要存储一些基本数据,例如客户信息、车辆信息和付款计划等。这些数据通常来自 GUI 界面,并使用 Python 语言进行处理。对于缺乏数据库系统经验的开发人员来说,在文件中以纯文本形式存储数据是一种简单方便的方法。但是,这种方式是否安全可靠,还有没有更好的解决方案?

2、解决方案

方案一:使用 SQLite 数据库

SQLite 是一个轻量级、文件型的数据库系统,非常适合存储少量数据。它不需要安装和配置,也不需要专门的数据库服务器,非常易于使用。

import sqlite3

# 创建一个数据库连接
conn = sqlite3.connect('data.db')

# 创建一个游标
cursor = conn.cursor()

# 创建一个表
cursor.execute('''CREATE TABLE customers (
id INTEGER PRIMARY KEY,
name TEXT,
address TEXT,
phone TEXT
)''')

# 插入数据
cursor.execute('''INSERT INTO customers (name, address, phone) VALUES 
('John Doe', '123 Main Street', '555-1212')''')

# 提交更改
conn.commit()

# 查询数据
cursor.execute('''SELECT * FROM customers''')

# 遍历查询结果
for row in cursor.fetchall():
    print(row)

# 关闭连接
conn.close()

方案二:使用 Pickle 库

Pickle 库可以将 Python 对象序列化为字节流,然后存储在文件中。在需要的时候,可以将字节流反序列化为 Python 对象。

import pickle

# 创建一个字典对象
data = {
    'name': 'John Doe',
    'address': '123 Main Street',
    'phone': '555-1212'
}

# 将字典对象序列化为字节流
serialized_data = pickle.dumps(data)

# 将字节流写入文件
with open('data.pkl', 'wb') as f:
    f.write(serialized_data)

# 从文件中读取字节流
with open('data.pkl', 'rb') as f:
    serialized_data = f.read()

# 将字节流反序列化为字典对象
data = pickle.loads(serialized_data)

# 打印字典对象
print(data)

方案三:使用 YAML 库

YAML 库可以将 Python 对象转换为 YAML 格式的字符串,然后存储在文件中。在需要的时候,可以将 YAML 格式的字符串转换为 Python 对象。

import yaml

# 创建一个字典对象
data = {
    'name': 'John Doe',
    'address': '123 Main Street',
    'phone': '555-1212'
}

# 将字典对象转换为 YAML 格式的字符串
yaml_data = yaml.dump(data)

# 将 YAML 格式的字符串写入文件
with open('data.yaml', 'w') as f:
    f.write(yaml_data)

# 从文件中读取 YAML 格式的字符串
with open('data.yaml', 'r') as f:
    yaml_data = f.read()

# 将 YAML 格式的字符串转换为字典对象
data = yaml.load(yaml_data)

# 打印字典对象
print(data)

方案四:使用 JSON 库

JSON 库可以将 Python 对象转换为 JSON 格式的字符串,然后存储在文件中。在需要的时候,可以将 JSON 格式的字符串转换为 Python 对象。

import json

# 创建一个字典对象
data = {
    'name': 'John Doe',
    'address': '123 Main Street',
    'phone': '555-1212'
}

# 将字典对象转换为 JSON 格式的字符串
json_data = json.dumps(data)

# 将 JSON 格式的字符串写入文件
with open('data.json', 'w') as f:
    f.write(json_data)

# 从文件中读取 JSON 格式的字符串
with open('data.json', 'r') as f:
    json_data = f.read()

# 将 JSON 格式的字符串转换为字典对象
data = json.loads(json_data)

# 打印字典对象
print(data)

方案五:使用自定义文本文件格式

如果上述方案都不适合,也可以使用自定义的文本文件格式来存储数据。这种方式比较灵活,但需要自行编写代码来解析数据。

# 自定义文本文件格式
# 每行一个字段,字段之间用逗号分隔

# 创建一个文本文件
with open('data.txt', 'w') as f:
    f.write('name,address,phone\n')
    f.write('John Doe,123 Main Street,555-1212\n')

# 从文本文件中读取数据
with open('data.txt', 'r') as f:
    lines = f.readlines()

# 解析数据
data = []
for line in lines:
    fields = line.split(',')
    data.append({
        'name': fields[0],
        'address': fields[1],
        'phone': fields[2]
    })

# 打印数据
print(data)

在这些方案中,SQLite 数据库是最安全可靠的。它可以保证数据的完整性和一致性,并支持多种查询和过滤操作。但是,SQLite 数据库需要安装和配置,而且使用起来也比较复杂。

Pickle 库和 YAML 库比较简单易用,但它们不适合存储大量的数据。JSON 库非常适合存储结构化的数据,但它不适合存储二进制数据。自定义文本文件格式非常灵活,但它需要自行编写代码来解析数据。

因此,在选择数据存储方案时,需要根据实际情况综合考虑安全、性能、易用性、灵活性等因素。