Python如何永久存储支持增删编辑的客户预约列表数据
客户预约数据持久化实现方案
你当前把数据存在内存列表里,程序关闭后内存释放数据就会丢失,要实现永久存储+增删改查,入门阶段优先选零依赖的内置方案,不需要额外安装任何工具。
优先推荐:JSON文件存储(最适合初学者)
Python自带json和文件操作能力,可以直接把列表、字典这类结构化数据序列化后存到本地文本文件,下次启动程序时直接读取还原成Python对象,完全满足你当前的功能需求。
核心实现逻辑
- 固定一个本地文件作为存储载体,比如
appointments.json - 写两个通用函数:一个负责从文件读数据到内存,一个负责把内存里修改完的数据写回文件
- 单条预约记录不要用纯列表靠索引存值,改成字典结构,用字段名标识姓名、预约时间、预约原因,后续增删改的时候不用记索引位置,不容易出错。
可直接运行的参考代码
import json import os # 本地存储文件路径 STORAGE_FILE = "appointments.json" def load_data(): # 如果存储文件不存在,返回空列表 if not os.path.exists(STORAGE_FILE): return [] # 读取文件内容,转回Python列表 with open(STORAGE_FILE, "r", encoding="utf-8") as f: return json.load(f) def save_data(data_list): # 把列表转成JSON格式写回文件,ensure_ascii=False保证中文正常显示 with open(STORAGE_FILE, "w", encoding="utf-8") as f: json.dump(data_list, f, ensure_ascii=False, indent=2) def add_record(): # 采集录入信息 name = input("Name: ") appt_time = input("Appointment (例:7月27日): ") reason = input("Reason: ") # 生成带唯一ID的记录,方便后续定位修改/删除 all_records = load_data() new_record = { "id": len(all_records) + 1, "name": name, "appointment_time": appt_time, "reason": reason } all_records.append(new_record) save_data(all_records) print("预约录入成功") def show_all_records(): records = load_data() if not records: print("当前无预约记录") return for item in records: print(f"ID:{item['id']} | 姓名:{item['name']} | 预约时间:{item['appointment_time']} | 预约原因:{item['reason']}") def delete_record(record_id): records = load_data() # 过滤掉要删除的ID对应的记录 updated_records = [item for item in records if item["id"] != record_id] save_data(updated_records) print(f"ID为{record_id}的预约已删除") def update_record(record_id, field, new_value): # field支持传name/appointment_time/reason,对应要修改的字段 records = load_data() for item in records: if item["id"] == record_id: item[field] = new_value break save_data(records) print("记录修改完成") # 测试入口 if __name__ == "__main__": while True: print("\n===== 预约管理系统 =====") print("1. 新增预约 2. 查看所有预约 3. 删除预约 4. 修改预约 5. 退出") choice = input("请输入操作编号:") if choice == "1": add_record() elif choice == "2": show_all_records() elif choice == "3": del_id = int(input("请输入要删除的预约ID:")) delete_record(del_id) elif choice == "4": upd_id = int(input("请输入要修改的预约ID:")) upd_field = input("请输入要修改的字段(name/appointment_time/reason):") upd_val = input("请输入新的内容:") update_record(upd_id, upd_field, upd_val) elif choice == "5": break else: print("输入无效,请重新选择")
运行后所有数据会存在程序同级目录的appointments.json文件里,直接用记事本就能打开查看内容,程序关闭后数据不会丢失。
进阶可选方案:SQLite轻量数据库
等你后续熟悉了基础逻辑,如果预约记录量变大、需要更复杂的查询能力(比如筛选某一天的所有预约、按客户名查预约记录),可以直接用Python内置的sqlite3模块,不需要安装任何数据库服务,数据存在单个.db文件里,支持标准SQL语句做增删改查,性能和数据严谨性比JSON文件更好。
学习建议
- 先把JSON方案跑通,重点理解两个核心概念:文件读写、序列化/反序列化。序列化就是把内存里的Python列表、字典转换成可以存到文件的文本格式,反序列化就是把文件里的文本重新转成Python可以直接操作的对象。
- 熟练JSON方案后,再学习SQLite基础用法,先掌握
INSERT/SELECT/UPDATE/DELETE四个基础SQL语句,就能实现完整的预约管理功能。 - 尽早把单条记录从纯列表结构改成字典结构,靠字段名取值比靠索引取值的代码更不容易出错,后续扩展功能也更方便。
内容的提问来源于stack exchange,提问作者Sulaman Yaqoob
相关产品推荐
相关产品推荐

