You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何永久存储支持增删编辑的客户预约列表数据

客户预约数据持久化实现方案

你当前把数据存在内存列表里,程序关闭后内存释放数据就会丢失,要实现永久存储+增删改查,入门阶段优先选零依赖的内置方案,不需要额外安装任何工具。

优先推荐:JSON文件存储(最适合初学者)

Python自带json和文件操作能力,可以直接把列表、字典这类结构化数据序列化后存到本地文本文件,下次启动程序时直接读取还原成Python对象,完全满足你当前的功能需求。

核心实现逻辑

  1. 固定一个本地文件作为存储载体,比如appointments.json
  2. 写两个通用函数:一个负责从文件读数据到内存,一个负责把内存里修改完的数据写回文件
  3. 单条预约记录不要用纯列表靠索引存值,改成字典结构,用字段名标识姓名、预约时间、预约原因,后续增删改的时候不用记索引位置,不容易出错。

可直接运行的参考代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 00:39:17