超超哥AI云计算超哥讲AI 出品

社群入口

AI 超哥 Codex 副业群

扫码加入群聊,一起交流 AI、Codex 与副业实践。

原图注明二维码于10月20日前有效;若提示过期或无法入群,请等待更新二维码。

AI 超哥 Codex 副业群入群二维码在新窗口打开原图

SQLAlchemy 映射、关系与查询

MySQL、SQLAlchemy 与数据库设计#Python全栈#第十四阶段#MySQL、SQLAlchemy 与数据库设计#SQLAlchemy 映射、关系与查询约 853 字 · 2 分钟阅读
追问显示
点击任意追问卡片可收起 / 展开

SQLAlchemy Core 与 ORM 各提供什么能力?

追问 SQL 表达式、连接与对象映射怎样配合?什么时候显式查询字段比加载完整模型对象更合适?

Engine、数据库驱动、Connection 与 Session 有什么区别?

追问 连接配置、池化、单个连接和业务工作单元分别由谁管理?创建 Engine 是否就立即建立了所有数据库连接?

DeclarativeBase、Mapped 与 mapped_column 怎样声明模型?

追问 Python 类型、数据库类型、主键与可空设置怎样对应?如何核对显式配置,避免依赖推导得到错误表结构?

ForeignKey 与 relationship 各表达什么?

追问 数据库约束与 Python 属性导航为何不同?声明 relationship 是否会自动补齐全部外键和业务授权?

一对多与多对多关系怎样映射?

追问 back_populates、关联表和关联对象模式如何选择?关系包含额外字段时,如何显式管理它们?

ORM cascade 与数据库 ON DELETE 有什么区别?

追问 delete-orphan 和 passive_deletes 应结合什么前提使用?为什么错误配置可能删除不应删除的关联数据?

SQLAlchemy 2.0 中怎样用 select 构造 ORM 查询?

追问 where、order_by、limit 与 join 如何组合?执行语句和构建语句分别何时发生?

Session.execute、scalars、scalar_one 与 scalar_one_or_none 怎样取结果?

追问 Row、模型实例、单列值和数量约束如何区分?零条、多条记录怎样反馈,为什么不应随意 first 掩盖数据异常?

怎样只查询必要字段并构造接口输出?

追问 聚合、列查询、模型对象与输出 DTO 怎样选择?为什么直接序列化 dict 可能混入内部状态或遗漏未加载字段?

ORM 查询如何实现关联筛选、分页与稳定排序?

追问 一对多 join 后如何保证分页对象和总数语义正确?不能直接对关联行数当作资源总数的原因是什么?

核对资料: SQLAlchemy 2.0 ORM 快速入门。