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 快速入门。