SlideShare a Scribd company logo
1 of 72
Download to read offline
Python 与数据库

刘鑫 <liuxin2@kingsoft.com>

第三讲:从 SQLAlchemy 谈存储层架构


    September 1, 2010




                        .   .   .   .   .   .
前情回顾




       .   .   .   .   .   .
Python 访问关系数据库有多种方法




               .   .   .   .   .   .
基础技能




       标准接口 DBAPI




                    .   .   .   .   .   .
有争议但值得关注




           ORM




                 .   .   .   .   .   .
推荐的 ORM




          SQLAlchemy




                       .   .   .   .   .   .
常见的与数据库有关的问题




          .    .   .   .   .   .
开发效率和代码质量




            .   .   .   .   .   .
运行效率




       .   .   .   .   .   .
其实这个不太常见




           可移植性




                  .   .   .   .   .   .
可重用性




       .   .   .   .   .   .
资源管理




       .   .   .   .   .   .
解决之道?




        .   .   .   .   .   .
良好的抽象




        .   .   .   .   .   .
适当组件化




        .   .   .   .   .   .
ORM and DAL




              .   .   .   .   .   .
Python 数据库访问工具的典范




              .     .   .   .   .   .
SQLAlchemy




             .   .   .   .   .   .
SQLAlchemy




             Figure: SQLAlchemy 组成


                                 .   .   .   .   .   .
模型层




      .   .   .   .   .   .
模型层




                    {
              映射     业务模型,    用户自定义的业务类
      Mapping − −
               −→
                     Model,   数据模型




                                .   .   .   .   .   .
模型层




              
              Table,
                          数据表映射
              
              
              Field,      字段及复合列
      数据模型 −→
              Query,
                          允许映射查询
              
              
              Relation,   各种关系




                            .   .   .   .   .   .
映射工具




       Mapping 将业务规则映射到模型




                      .   .   .   .   .   .
映射工具




       MetaData 将模型与操作映射到 Engine




                          .   .    .   .   .   .
映射工具




       MetaData 反射元信息




                    .   .   .   .   .   .
会话层




      .   .   .   .   .   .
会话层




      Session 是 SQLALchemy 体系中的架构核心




                           .   .   .   .   .   .
可以管理多个 Engine




                .   .   .   .   .   .
分布式事务




        .   .   .   .   .   .
两阶段提交




        .   .   .   .   .   .
分布式事务




 e n g i n e 1 = c r e a t e e n g i n e ( ’ p o s t g r e s q l : / / db1 ’ )
 e n g i n e 2 = 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 = s e s s i o n m a k e r ( t w o p h a s e=True )
 S e s s i o n . c o n f i g u r e ( b i n d s ={U s e r : e n g i n e 1 , Account : e n g i n
 session = Session ()




                                                         .    .     .     .     .     .
SQL Expression




                 .   .   .   .   .   .
智能数据对象




         .   .   .   .   .   .
连接层




      .   .   .   .   .   .
Engine 可以作为会话引擎




             .    .   .   .   .   .
Engine




         也可以独立使用




                   .   .   .   .   .   .
Engine




         连接池




               .   .   .   .   .   .
Engine




         Connection 管理




                         .   .   .   .   .   .
Engine




         数据库元信息




                  .   .   .   .   .   .
Connection




             .   .   .   .   .   .
Connection




             强化的 DBAPI Connection+cursor




                                   .   .   .   .   .   .
Connection




             参数安全




                    .   .   .   .   .   .
Connection




             更友好的结果集




                       .   .   .   .   .   .
Connection




             完整的事务控制




                       .   .   .   .   .   .
Connection




             可理解模型操作




                       .   .   .   .   .   .
经典示范




       .   .   .   .   .   .
Pylons




         .   .   .   .   .   .
turbogears




             .   .   .   .   .   .
怪·力·乱·神




          .   .   .   .   .   .
Socrates
http://bitbucket.org/March/socrates




                          .   .   .   .   .   .
doctest




          .   .   .   .   .   .
Storage. init




                运行时建模




                        .   .   .   .   .   .
Storage.registeType




                      动态建模




                             .   .   .   .   .   .
Subject




          自定义容器




                  .   .   .   .   .   .
Segment/Subject




                  业务规则封装




                           .   .   .   .   .   .
一家之言




       面向数据库的架构设计




                .   .   .   .   .   .
有效管理资源




         .   .   .   .   .   .
合理建模,防止过度设计




          .   .   .   .   .   .
保持敏捷,不过度优化




         .   .   .   .   .   .
基于运行时环境设计




            .   .   .   .   .   .
框架?




      .   .   .   .   .   .
操作系统?




        .   .   .   .   .   .
HTTP 服务和加载模式?




            .   .   .   .   .   .
多线程 vs 多进程?




              .   .   .   .   .   .
多进程




      尽快完成




             .   .   .   .   .   .
多进程




      保持和控制资源




                .   .   .   .   .   .
多进程




      干净回收




             .   .   .   .   .   .
多线程




      资源池




            .   .   .   .   .   .
多线程




      警惕争用与死锁




                .   .   .   .   .   .
多线程




      防止并发过度




               .   .   .   .   .   .
如何管好数据,是一门艺术




          .    .   .   .   .   .
谢谢大家!




        再见!




              .   .   .   .   .   .

More Related Content

Similar to Python 数据库技术第三讲

软件开发工程化的个人体验
软件开发工程化的个人体验软件开发工程化的个人体验
软件开发工程化的个人体验March Liu
 
C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述Xiaozhe Wang
 
Xcode tutorial
Xcode tutorialXcode tutorial
Xcode tutorialMarch Liu
 
分布式索引构建
分布式索引构建分布式索引构建
分布式索引构建智杰 付
 
Emacs Introduction
Emacs IntroductionEmacs Introduction
Emacs IntroductionMarch Liu
 
OI算法竞赛中树形数据结构
OI算法竞赛中树形数据结构OI算法竞赛中树形数据结构
OI算法竞赛中树形数据结构Ray Song
 
《云计算核心技术剖析》Mini书
《云计算核心技术剖析》Mini书《云计算核心技术剖析》Mini书
《云计算核心技术剖析》Mini书ikewu83
 
C++工程实践
C++工程实践C++工程实践
C++工程实践Shuo Chen
 
Unixtoolbox zh cn
Unixtoolbox zh cnUnixtoolbox zh cn
Unixtoolbox zh cnxdboy2006
 
Mybatis学习培训
Mybatis学习培训Mybatis学习培训
Mybatis学习培训flynofry
 
Glibc memory management
Glibc memory managementGlibc memory management
Glibc memory managementdddsf3562
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展Sky Jian
 
Excel+ppt+word2003使用技巧方法大全
Excel+ppt+word2003使用技巧方法大全Excel+ppt+word2003使用技巧方法大全
Excel+ppt+word2003使用技巧方法大全0hanfeng0
 
Linux 期末報告
Linux 期末報告Linux 期末報告
Linux 期末報告米米 林
 
8门编程语言的设计思考
8门编程语言的设计思考8门编程语言的设计思考
8门编程语言的设计思考Ray Song
 
Python速成指南
Python速成指南Python速成指南
Python速成指南March Liu
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江thinkinlamp
 

Similar to Python 数据库技术第三讲 (20)

软件开发工程化的个人体验
软件开发工程化的个人体验软件开发工程化的个人体验
软件开发工程化的个人体验
 
C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述
 
Xcode tutorial
Xcode tutorialXcode tutorial
Xcode tutorial
 
Twido programming guide
Twido programming guideTwido programming guide
Twido programming guide
 
分布式索引构建
分布式索引构建分布式索引构建
分布式索引构建
 
Emacs Introduction
Emacs IntroductionEmacs Introduction
Emacs Introduction
 
OI算法竞赛中树形数据结构
OI算法竞赛中树形数据结构OI算法竞赛中树形数据结构
OI算法竞赛中树形数据结构
 
《云计算核心技术剖析》Mini书
《云计算核心技术剖析》Mini书《云计算核心技术剖析》Mini书
《云计算核心技术剖析》Mini书
 
C++工程实践
C++工程实践C++工程实践
C++工程实践
 
Unixtoolbox zh cn
Unixtoolbox zh cnUnixtoolbox zh cn
Unixtoolbox zh cn
 
unixtoolbox_zh_CN
unixtoolbox_zh_CNunixtoolbox_zh_CN
unixtoolbox_zh_CN
 
Mybatis学习培训
Mybatis学习培训Mybatis学习培训
Mybatis学习培训
 
Glibc memory management
Glibc memory managementGlibc memory management
Glibc memory management
 
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
 
Excel+ppt+word2003使用技巧方法大全
Excel+ppt+word2003使用技巧方法大全Excel+ppt+word2003使用技巧方法大全
Excel+ppt+word2003使用技巧方法大全
 
Linux 期末報告
Linux 期末報告Linux 期末報告
Linux 期末報告
 
Tcfsh bootcamp day2
 Tcfsh bootcamp day2 Tcfsh bootcamp day2
Tcfsh bootcamp day2
 
8门编程语言的设计思考
8门编程语言的设计思考8门编程语言的设计思考
8门编程语言的设计思考
 
Python速成指南
Python速成指南Python速成指南
Python速成指南
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江
 

More from March Liu

Jaskell Core Parsec
Jaskell Core ParsecJaskell Core Parsec
Jaskell Core ParsecMarch Liu
 
轻量级文本工具集
轻量级文本工具集轻量级文本工具集
轻量级文本工具集March Liu
 
奇点与未来
奇点与未来奇点与未来
奇点与未来March Liu
 
尼尔盖曼的美国众神
尼尔盖曼的美国众神尼尔盖曼的美国众神
尼尔盖曼的美国众神March Liu
 
创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务March Liu
 
It工程师的职业成长
It工程师的职业成长It工程师的职业成长
It工程师的职业成长March Liu
 
Socrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemySocrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemyMarch Liu
 
PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性March Liu
 
Python 数据库技术
Python 数据库技术Python 数据库技术
Python 数据库技术March Liu
 
PostgreSQL 9 的 standby 集群实践
PostgreSQL 9 的 standby 集群实践PostgreSQL 9 的 standby 集群实践
PostgreSQL 9 的 standby 集群实践March Liu
 
基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案March Liu
 
3 Python开发风格与建议
3 Python开发风格与建议3 Python开发风格与建议
3 Python开发风格与建议March Liu
 
Postgre sql intro 0
Postgre sql intro 0Postgre sql intro 0
Postgre sql intro 0March Liu
 
Perl 6 news at 2010-06
Perl 6 news at 2010-06Perl 6 news at 2010-06
Perl 6 news at 2010-06March Liu
 

More from March Liu (15)

Jaskell Core Parsec
Jaskell Core ParsecJaskell Core Parsec
Jaskell Core Parsec
 
轻量级文本工具集
轻量级文本工具集轻量级文本工具集
轻量级文本工具集
 
奇点与未来
奇点与未来奇点与未来
奇点与未来
 
尼尔盖曼的美国众神
尼尔盖曼的美国众神尼尔盖曼的美国众神
尼尔盖曼的美国众神
 
创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务创业项目中常见的技术和管理债务
创业项目中常见的技术和管理债务
 
It工程师的职业成长
It工程师的职业成长It工程师的职业成长
It工程师的职业成长
 
Socrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemySocrates Used PostgreSQL and SQLAlchemy
Socrates Used PostgreSQL and SQLAlchemy
 
PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性PostgreSQL 9 1 新特性
PostgreSQL 9 1 新特性
 
Python 数据库技术
Python 数据库技术Python 数据库技术
Python 数据库技术
 
PostgreSQL 9 的 standby 集群实践
PostgreSQL 9 的 standby 集群实践PostgreSQL 9 的 standby 集群实践
PostgreSQL 9 的 standby 集群实践
 
基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案基于 PostgreSQL 的关系型数据库方案
基于 PostgreSQL 的关系型数据库方案
 
About Me
About MeAbout Me
About Me
 
3 Python开发风格与建议
3 Python开发风格与建议3 Python开发风格与建议
3 Python开发风格与建议
 
Postgre sql intro 0
Postgre sql intro 0Postgre sql intro 0
Postgre sql intro 0
 
Perl 6 news at 2010-06
Perl 6 news at 2010-06Perl 6 news at 2010-06
Perl 6 news at 2010-06
 

Recently uploaded

EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxmekosin001123
 
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书jakepaige317
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制jakepaige317
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxmekosin001123
 
educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxmekosin001123
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...黑客 接单【TG/微信qoqoqdqd】
 

Recently uploaded (6)

EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptxEDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
 
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
 
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
 
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptxEDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
 
educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptxeduc6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
 
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
 

Python 数据库技术第三讲