Python 现代开发学习笔记

17-01 书目修改记录

本章题解 · 全部练习

题目

先推导:新旧字段在哪里保存,哪个批次触发变化。完成时核对:修改一次后能比较前后值,再采集不增加假修改。

推导与做法

先按 source_id 读旧字段,再比较规范化后的新字段。完全相同就结束;确有变化时,在同一事务内写 changes 的 before、after、batch,再更新正式书目。

演示 batch-1 新建,batch-2 把 finished 改成 True,batch-3 再采集相同内容。修改表只有 batch-2 一行,能比较前后值,重复采集不会产生假的历史。

过程图

%% 每个节点保留输入、执行位置或执行后的实际状态。 flowchart TD S0["batch1保存未读字段"] S1["batch2比较出已读变化"] S0 --> S1 S2["同事务保存前后值与batch2"] S1 --> S2 S3["batch3相同字段:不增加假历史"] S2 --> S3 classDef default fill:#EEF0FB,stroke:#4657B5,color:#24324A linkStyle default stroke:#4657B5

实现与运行

查看带注释实现。本题与相关处理函数放在同一章节代码文件中;启动工具负责定位相邻项目和选择题号。

在配套目录的 综合项目与交付/model_project 中运行。先按项目 README 执行 uv sync --locked。

# 使用项目解释器运行本题,题号决定执行哪一组演示。
uv run python "../../学习索引/参考实现/代码/ch17.py" 17-01

程序按题号输出处理后的值、查询结果或状态。先和前面的手算比较,再修改一项输入重跑。

查看本题运行结果
# 与上面的手算状态和题目数值逐项比较。
[
  [
    "b101",
    "batch-2",
    "{\"finished\": false, \"title\": \"Python\"}",
    "{\"finished\": true, \"title\": \"Python\"}"
  ]
]

笔记正文与全部题解 · Ctrl / ⌘ K