SQLAlchemy Python数据库实战 第2版(图灵出品)
本书主要探讨SQLAlchemy,这个Python 库在关系型数据库和传统编程之间架起了一座桥
梁,有助于Python 程序员将应用程序连接到关系型数据库。本书首先通过对比的方式介绍了SQLAlchemy 的两种主要使用模式——SQLAlchemy Core 和SQLAlchemy ORM,然后探讨了数据库迁移工具Alembic 的用法,快速讲解了SQLAlchemy 的应用。
SQLAlchemy是一个流行的开源代码库,功能强大又相当灵活,能够帮助Python程序员使用各种关系型数据库,许多公司甚至把SQLAlchemy看作在Python中使用关系型数据库的标准方式,使用SQLAlchemy已经成为Python程序员必备的技能之一。
1.本书为O'Reilly系列丛书,众多年来“动物书”成为广大程序员心目中的解决问题的**指南;
2.本书通过真实示例,一步步指导读者使用SQLAlchemy构建简单的数据库应用程序,以及使用相同的元数据同时连接多个数据库,既是很棒的学习工具,也是不错的参考手册;
3.本书提供了SQLAlchemy Core和SQLAlchemy ORM两种用法的对照,读者可以根据实际情况选择全部阅读或者只阅读当前需要的部分;
4.本书提供了示例代码和相关练习的下载链接,读者可以将示例代码直接用于自己的程序,提高工作效率;
5.读者可以在图灵社区中与其他读者进行交流,共同解决阅读和工作中遇到的问题,结交更多的学习路上的小伙伴。
贾森·迈尔斯(Jason Myers),Built Technologies平台工程师,曾在思科公司担任技术主管。在转做开发前,曾做过15年系统架构师。
里克·科普兰(Rick Copeland),Carefolio公司联合创始人兼CEO,Arborian咨询公司顾问,是位经验丰富的创业者、技术主管、演讲者、培训师和顾问。
前言 ix
SQLAlchemy 入门 xv
第 一部分 SQLAlchemy Core
第 1 章 模式和类型 3
1.1 类型 3
1.2 元数据 5
1.3 表 5
1.3.1 列 6
1.3.2 键和约束 7
1.3.3 索引 8
1.3.4 关联关系和外键约束 8
1.4 表的持久化 10
第 2 章 使用SQLAlchemy Core 处理数据 12
2.1 插入数据 12
2.2 查询数据 15
2.2.1 ResultProxy 16
2.2.2 控制查询中的列数 18
2.2.3 排序 18
2.2.4 限制返回结果集的条数 19
2.2.5 内置SQL 函数和标签 20
2.2.6 过滤 21
2.2.7 ClauseElement 22
2.2.8 运算符 23
2.2.9 布尔运算符 24
2.2.10 连接词 24
2.3 更新数据 25
2.4 删除数据 26
2.5 连接 27
2.6 别名 29
2.7 分组 29
2.8 链式调用 30
2.9 原始查询 32
第3 章 异常和事务 33
3.1 异常 33
3.1.1 AttributeError 34
3.1.2 IntegrityError 35
3.1.3 处理错误 37
3.2 事务 38
第4 章 测试 45
4.1 使用测试数据库做测试 45
4.2 使用mock 51
第5 章 反射 54
5.1 反射单个表 54
5.2 反射整个数据库 56
5.3 使用反射对象构建查询 57
第二部分 SQLAlchemy ORM
第6 章 使用SQLAlchemy ORM 定义模式 61
6.1 使用ORM 类定义表 61
6.2 关系 63
6.3 模式持久化 65
第7 章 使用SQLAlchemy ORM 处理数据 66
7.1 会话 66
7.2 插入数据 68
7.3 查询数据 71
7.3.1 控制查询中的列数 74
7.3.2 排序 74
7.3.3 限制返回结果集的条数 75
7.3.4 内置SQL 函数和标签 75
7.3.5 过滤 77
7.3.6 运算符 78
7.3.7 布尔运算符 79
7.3.8 连接词 79
7.4 更新数据 80
7.5 删除数据 81
7.6 连接 83
7.7 分组 85
7.8 链式调用 85
7.9 原始查询 87
第8 章 理解会话和异常 88
8.1 SQLAlchemy 会话 90
8.2 异常 92
8.2.1 MultipleResultsFound 异常 93
8.2.2 DetachedInstanceError 94
8.3 事务 96
第9 章 使用SQLAlchemy ORM 测试 103
9.1 使用测试数据库做测试 103
9.2 使用mock 111
第 10 章 使用SQLAlchemy ORM 和自动映射进行反射 113
10.1 使用自动映射反射数据库 113
10.2 反射关系 115
第三部分 Alembic
第 11 章 Alembic 入门 119
11.1 创建迁移环境 119
11.2 配置迁移环境 120
第 12 章 创建迁移 122
12.1 创建基础空迁移 122
12.2 自动生成迁移 124
12.3 手动创建迁移 127
第 13 章 控制Alembic 129
13.1 确定数据库的迁移级别 129
13.2 迁移降级 130
13.3 标记数据库迁移级别 131
13.4 生成SQL 131
第 14 章 SQLAlchemy 的高级应用 133
14.1 混合属性 133
14.2 关联代理 136
14.3 集成SQLAlchemy 和Flask 141
14.4 SQLAcodegen 143
第 15 章 接下来做什么 149
关于作者 150
关于封面 150