python 数据库技术第三讲
DESCRIPTION
Python 技术内训,数据库部分的第三讲 从SQLAlchemy谈面向存储层和数据库的开发TRANSCRIPT
![Page 2: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/2.jpg)
. . . . . .
前情回顾
![Page 3: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/3.jpg)
. . . . . .
Python 访问关系数据库有多种方法
![Page 4: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/4.jpg)
. . . . . .
基础技能
标准接口 DBAPI
![Page 5: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/5.jpg)
. . . . . .
有争议但值得关注
ORM
![Page 6: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/6.jpg)
. . . . . .
推荐的 ORM
SQLAlchemy
![Page 7: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/7.jpg)
. . . . . .
常见的与数据库有关的问题
![Page 8: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/8.jpg)
. . . . . .
开发效率和代码质量
![Page 9: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/9.jpg)
. . . . . .
运行效率
![Page 10: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/10.jpg)
. . . . . .
其实这个不太常见
可移植性
![Page 11: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/11.jpg)
. . . . . .
可重用性
![Page 12: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/12.jpg)
. . . . . .
资源管理
![Page 13: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/13.jpg)
. . . . . .
解决之道?
![Page 14: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/14.jpg)
. . . . . .
良好的抽象
![Page 15: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/15.jpg)
. . . . . .
适当组件化
![Page 16: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/16.jpg)
. . . . . .
ORM and DAL
![Page 17: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/17.jpg)
. . . . . .
Python 数据库访问工具的典范
![Page 18: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/18.jpg)
. . . . . .
SQLAlchemy
![Page 19: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/19.jpg)
. . . . . .
SQLAlchemy
Figure: SQLAlchemy 组成
![Page 20: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/20.jpg)
. . . . . .
模型层
![Page 21: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/21.jpg)
. . . . . .
模型层
Mapping 映射−−−→
{业务模型, 用户自定义的业务类Model, 数据模型
![Page 22: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/22.jpg)
. . . . . .
模型层
数据模型 −→
Table, 数据表映射Field, 字段及复合列Query, 允许映射查询Relation, 各种关系
![Page 23: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/23.jpg)
. . . . . .
映射工具
Mapping 将业务规则映射到模型
![Page 24: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/24.jpg)
. . . . . .
映射工具
MetaData 将模型与操作映射到 Engine
![Page 25: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/25.jpg)
. . . . . .
映射工具
MetaData 反射元信息
![Page 26: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/26.jpg)
. . . . . .
会话层
![Page 27: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/27.jpg)
. . . . . .
会话层
Session 是 SQLALchemy 体系中的架构核心
![Page 28: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/28.jpg)
. . . . . .
可以管理多个 Engine
![Page 29: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/29.jpg)
. . . . . .
分布式事务
![Page 30: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/30.jpg)
. . . . . .
两阶段提交
![Page 31: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/31.jpg)
. . . . . .
分布式事务
eng ine1 = c r e a t e e n g i n e ( ’ p o s t g r e s q l : // db1 ’ )eng ine2 = c r e a t e e n g i n e ( ’ p o s t g r e s q l : // db2 ’ )S e s s i o n = se s s i onmake r ( twophase=True )S e s s i o n . c o n f i g u r e ( b i nd s={User : eng ine1 , Account : eng ine2 })s e s s i o n = S e s s i o n ( )
![Page 32: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/32.jpg)
. . . . . .
SQL Expression
![Page 33: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/33.jpg)
. . . . . .
智能数据对象
![Page 34: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/34.jpg)
. . . . . .
连接层
![Page 35: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/35.jpg)
. . . . . .
Engine 可以作为会话引擎
![Page 36: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/36.jpg)
. . . . . .
Engine
也可以独立使用
![Page 37: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/37.jpg)
. . . . . .
Engine
连接池
![Page 38: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/38.jpg)
. . . . . .
Engine
Connection 管理
![Page 39: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/39.jpg)
. . . . . .
Engine
数据库元信息
![Page 40: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/40.jpg)
. . . . . .
Connection
![Page 41: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/41.jpg)
. . . . . .
Connection
强化的 DBAPI Connection+cursor
![Page 42: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/42.jpg)
. . . . . .
Connection
参数安全
![Page 43: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/43.jpg)
. . . . . .
Connection
更友好的结果集
![Page 44: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/44.jpg)
. . . . . .
Connection
完整的事务控制
![Page 45: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/45.jpg)
. . . . . .
Connection
可理解模型操作
![Page 46: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/46.jpg)
. . . . . .
经典示范
![Page 47: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/47.jpg)
. . . . . .
Pylons
![Page 48: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/48.jpg)
. . . . . .
turbogears
![Page 49: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/49.jpg)
. . . . . .
怪 · 力 · 乱 · 神
![Page 51: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/51.jpg)
. . . . . .
doctest
![Page 52: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/52.jpg)
. . . . . .
Storage. init
运行时建模
![Page 53: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/53.jpg)
. . . . . .
Storage.registeType
动态建模
![Page 54: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/54.jpg)
. . . . . .
Subject
自定义容器
![Page 55: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/55.jpg)
. . . . . .
Segment/Subject
业务规则封装
![Page 56: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/56.jpg)
. . . . . .
一家之言
面向数据库的架构设计
![Page 57: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/57.jpg)
. . . . . .
有效管理资源
![Page 58: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/58.jpg)
. . . . . .
合理建模,防止过度设计
![Page 59: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/59.jpg)
. . . . . .
保持敏捷,不过度优化
![Page 60: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/60.jpg)
. . . . . .
基于运行时环境设计
![Page 61: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/61.jpg)
. . . . . .
框架?
![Page 62: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/62.jpg)
. . . . . .
操作系统?
![Page 63: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/63.jpg)
. . . . . .
HTTP 服务和加载模式?
![Page 64: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/64.jpg)
. . . . . .
多线程 vs 多进程?
![Page 65: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/65.jpg)
. . . . . .
多进程
尽快完成
![Page 66: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/66.jpg)
. . . . . .
多进程
保持和控制资源
![Page 67: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/67.jpg)
. . . . . .
多进程
干净回收
![Page 68: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/68.jpg)
. . . . . .
多线程
资源池
![Page 69: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/69.jpg)
. . . . . .
多线程
警惕争用与死锁
![Page 70: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/70.jpg)
. . . . . .
多线程
防止并发过度
![Page 71: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/71.jpg)
. . . . . .
如何管好数据,是一门艺术
![Page 72: Python 数据库技术第三讲](https://reader033.vdocuments.site/reader033/viewer/2022052203/556a6a50d8b42ab0468b4ced/html5/thumbnails/72.jpg)
. . . . . .
谢谢大家!
再见!