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

Python Flask API如何将CRUD操作数据永久保存到JSON文件

问题原因

你当前的实现仅在程序启动时将MOCK_DATA.json的内容加载到内存的finances列表中,后续所有增删改操作都是修改内存中的变量,并没有将变更写回磁盘的JSON文件。程序停止运行后内存数据被释放,重启时会重新读取原始JSON文件,因此修改无法保留。

解决方案

步骤1:新增持久化工具函数

在加载finances的代码之后,新增一个公共函数,用于将内存中的最新数据写回JSON文件:

import json
# 你原有读取文件的代码
with open('MOCK_DATA.json', encoding='utf-8') as data_file:
        finances = json.loads(data_file.read())

# 新增的保存函数
def save_finances_to_file():
    with open('MOCK_DATA.json', 'w', encoding='utf-8') as f:
        # indent=2 保持JSON格式化便于阅读,ensure_ascii=False 避免中文乱码
        json.dump(finances, f, indent=2, ensure_ascii=False)

步骤2:在所有修改数据的接口中调用保存函数

分别在post、put、delete方法完成对finances的修改后,调用上面的保存函数:

post方法修改

在finances.append(person)之后加一行调用代码:

finances.append(person)
save_finances_to_file() # 新增持久化代码
return finances, 201

put方法修改

两处修改finances的位置之后都需要添加调用:
第一处是修改已有用户信息之后:

person["credit_limit"] = args["credit_limit"]
save_finances_to_file() # 新增持久化代码
return person, 200

第二处是新增用户append之后:

finances.append(person)
save_finances_to_file() # 新增持久化代码
return person, 201

delete方法修改

在重新给finances赋值之后添加调用:

global finances
finances = [person for person in finances if person["id"] != id]
save_finances_to_file() # 新增持久化代码
return f"Person with id {id} is deleted.", 200
注意事项
  • 若后续有高并发请求需求,直接读写JSON文件会存在冲突问题,业务量上升后建议切换到SQLite等轻量数据库做持久化
  • 可以定期备份JSON文件,避免写操作异常导致文件损坏丢失所有数据

内容的提问来源于stack exchange,提问作者st123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:45:05