推荐阅读
- 先巩固语法与标准库核心用法
- 再看虚拟环境、测试与打包实践
- 最后看性能优化与异步并发
🧱 从零到生产:如何优雅地设计 ORM 层管理(以 SQLAlchemy 为核心) 本文将带你从数据库表结构出发,构建一套高内聚、低耦合的 ORM 层架构。 目标:让你的 Flask / FastAPI 项目在数据访问上既简洁又稳健。 一、为什么要重视 ORM 层设计? 很多项目初期只是“先能跑”,直接把 SQL 写在控制器里,但很快就会出现: 业务逻辑和 SQL 混在一起; 表关系复杂,维护困难; 想复用查询逻辑很麻烦; 迁移到别的框架(Flask → FastAPI)代价大。 ORM 层(Object Relational Mapping)是数据库与业务逻辑之间的 抽象桥梁, 一个好的 ORM 层能让你只关心对象,不用反复写 SQL。 二、项目场景:招标信息数据系统 我们以一个真实业务为例: 爬取各网站的招标公告,保存为结构化数据,并生成统计看板。 目标数据库实体 表名 功能 tender_info 公告基本信息 tender_attachments 公告及变更文件 tender_organization 招标机构与联系方式 tender_statistics 每日/月/年统计信息 三、ORM 层设计思路 🧩 分层原则 层级 作用 代码位置 Model 层 ORM 模型定义,对应数据库表结构 models.py Repository 层 封装 CRUD 逻辑(数据库操作) repository.py Service 层 业务逻辑层(聚合多个仓库逻辑) service.py API 层 控制器/路由接口 Flask/FastAPI 视图文件 这种分层让你做到: ...
Python 日志与追踪 Python 日志追踪实践 结构化日志与追踪 副标题/摘要: 结合 logging + OpenTelemetry 实现结构化日志并把 trace_id 注入日志,便于在生产环境串联调用链与定位问题。 TL;DR: 设置 json 格式日志并通过 OpenTelemetry 在每条日志里注入 trace_id/span_id。关键步骤:安装依赖 → 配置 logging(JSON)→ 配置 TracerProvider → 用 Filter 从当前 span 提取 trace 信息并添加到日志记录中。 目录 背景与动机(为什么需要) 关键概念与术语解释 环境与依赖(安装命令) 逐步实战示例(可直接运行) 原理与实现要点 常见问题与注意事项 最佳实践总结 结论与下一步建议 可视化建议 参考与延伸阅读 可复制示例代码 背景与动机(为什么需要) 现代后端服务分布式部署后,单靠文本日志很难把一次请求链路从入口到后端串起来。结构化日志(JSON)便于聚合与查询;而分布式追踪(tracing)给出调用链与 span 信息。二者结合能快速定位延迟与错误根因:日志告诉你“发生了什么”,trace 告诉你“这个请求经过了哪些服务/操作”。 关键概念与术语解释(简明) 日志(Logging):程序运行时的事件记录,通常按级别(INFO/ERROR)输出。 结构化日志:以 JSON 等结构化格式输出,便于机器处理与检索。 Trace/Span:一次分布式操作(trace)由若干子操作(span)组成,span 含有 trace_id 与 span_id。 Context Propagation:在不同服务/线程/协程中传递 trace context 以串联调用链。 环境与依赖(列出安装命令) 推荐环境:Python 3.8+ 安装依赖: pip install python-json-logger opentelemetry-api opentelemetry-sdk ...