MySQL 数据基础:关系、约束与订单查询|学员任务书
项目任务与本人起点
任务:批量商品资料复核与订单关系查询。起点是本人 W01 金额/模型/JSON 与测试;保留本人代码,领取当天 student/W02-D01 增量后只合并新增文件,不用日包覆盖昨天实现。
当天新增或补写 commerce_ops/import_products.py,保留 sql/schema.sql、sql/seed.sql、queries.sql 工程任务。D01 的 commerce_ops 是加入本人仓库的运营工具;之后每天继续同一个包。D05 不重复领取前四日答案,测试自己的实现。
支架与学生负责的部分
教师提供样本、接口签名、当日检查器以及既有 SQL/HTTP/容器支架。学生负责业务函数、边界处理和独立变化;完整教师实现不下发。命令在包含 commerce_ops 的本人项目根执行,现有实库和 HTTP 命令按各自 README 的工作目录运行。
python check_d01_python.py首次有效红灯应来自 STUDENT_TODO。D04/D05 若缺前一日模块,应先合并本人已完成代码;ModuleNotFoundError、缺 pytest 或缺服务都不算教学红灯。在当天 Python 3.12 环境用 python -m pip install -r requirements-python.txt 安装该日新增依赖;只做 D01 标准库文件检查时无需数据库依赖。
输入、输出与不变规则
金额内部 Decimal、对外两位小数字符串。商品编号/客户编号沿用样本,不让客户端提供最终金额。新增产物:CSV 惰性读取、JSONL 复核清单、五表关系与查询。
文件导出操作本地课程样本,确认后单独调用 MySQL 支架;多源查询连接器的本地替身不等于真实物流。实库只用专用实验库;不要把 mock/Fake 的通过写成 MySQL、Linux、Docker 或远端 CI 已通过。
分段任务
- 回归本人起点,标出输入、计算/状态变化和输出;保留修改前版本。
- 先运行课件的最小例,解释
Path/open/with、编码、CSV/JSON、iter/next/StopIteration、yield、生成器表达式、一次性消耗、惰性分批;保留 MySQL 关系、约束、JOIN 与参数绑定在当天任务里解决什么问题。 - 补当日 TODO;检查器转绿后,把功能保留在本人累计项目中。逐段修改,不让 AI 一次生成整套工程。
- 运行这些情况并比较预期与实际:读取三件和五件商品;空输入;坏单价行号;批大小 2→3;同一生成器二次消费;零订单客户与无效外键。
- 查看 AI 修改差异,至少指出一处接受或拒绝的理由。重点防止:迭代器被日志提前耗尽;错误发生在消费期;JSONL 误当整个 JSON 数组;部分输出误作全部成功。
- 同伴更换一组未见输入或一个故障点,作者先预测、再独立运行和解释;同伴按 README 复现,不靠作者代敲。
提交与验收
- 当日本人代码、运行命令、固定提交及与昨天的修改差异。
- 正常、失败、边界和修复后回归的输入与原始结果;具体运行项见上方第 4 步。
- 口述一个知识点为什么需要、在商城哪里用,以及一处不能由当前测试证明的结论。
- 原 SQL/事务/API/容器/CI 任务继续按真实环境验收;未运行项填写待验证。
只贴绿色截图、复制完成版、吞失败后伪造成功,不能通过。
课堂范围与后续
数据库安装长流程改为课前 G0,课堂保留连接故障定位;脚本建表提供支架,完整导入入库/复杂恢复不列核心。保留生成器边界和 LEFT JOIN 独立练习。
D02 沿用商品资料和关系表,学习资源收口与整笔订单回滚。尚未完成的本日核心必须补验,不能默认用课后新增学时替代课堂容量。
MySQL 接入要求:用本人导入器把 data/new_products.csv 完整生成 JSONL,再通过提供的 commerce_ops/mysql_catalog_import.py 向专用实验库新增 P2001/P2002。按课件查询产品与库存,验证未上架、零库存、金额与重复编号拒绝;没有真实库时该项保持待验,不把文件输出当持久化完成。连接支架无需学生从零编写,D02 再拆解事务边界。
数据库连接中断或提交响应异常时,命令失败不等于已经确定没提交;先按商品编号查询库中实际记录,再决定是否重试。JSONL 金额必须是两位小数字符串,数字或布尔值不能直接传给 Decimal。