- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
卷2 :第20章 SQLAlchemy
作者:Michael Bayer
译者:谢路云
状态:翻译中
原⽂地址:http://www .aosabook .org/en/sqlalchemy .html
SQLAlchemy是⼀个Python语⾔的数据库⼯具包和关系对 映射 ORM)系统,始于2005
年。从⼀开始,它就⼒求通过Python的数据库API (即DBAPI )提供⼀种和关系数据
库交互的端对端系统。从早期的版本开始,SQLAlchemy的功能就吸引了很多⼈的注
意⼒。它的主要特性包括能够流畅的表达复杂的SQL查询和对 映射,以及实现
了Unit of Work 模式来⾼度⾃动化的完成数据在数据库中的持久化。
从⼀个渺⼩⽽粗糙的概念性实现开始,SQLAlchemy迅速经历了⼀系列蜕变和打磨。
随着⽤户群的增长,内部架构和公共API也在不断的迭代。到了2009年⼀⽉发布0 .5版
本之时,SQLAlchemy 已经在⼤量的⽣产环境中部署并证明了⾃⼰,并开始稳定下
来。0 .6 (20 10年四⽉)和0 .7 (20 11年五⽉)两个版本对架构和API的改进使我们成为
了最⾼效和最稳定的第三⽅库。截⾄撰写本⽂之时,⼤量不同领域的组织都在使⽤
SQLAlchemy 。它已经被⼤家认可并事实上成为使⽤Python操作关系型数据库的标准
库。
20.1.数据库抽象层的挑战
“数据库抽 层”通常指的是⼀种⽤来和数据库通讯并隐藏数据的存储和查询的⼤部分
细节的系统。对这个词的理解有时会⾛向⼀个极端,认为这样的系统应该隐藏的不仅
是所使⽤的关系数据库的细节,还应该包括数据的关系结构,甚⾄不再关⼼底层的存
储机制是否是基于关系的。
对于ORM最常见的批评认为以上就是这种⼯具的最主要⽬的——把关系数据库“藏起
来” ,接管和数据库的交互并将它们转化为实现的细节。这种⽅式的核⼼意义在于将
设计和查询关系数据结构的⼯作从开发者转移到⼀个不透明的第三⽅库中。
经常和关系数据库打交道的⼈都知道,这种认识完全是不切实际的。关系结构和SQL
查询都是功能性的,它们组成了⼀个应⽤程序设计的核⼼。应该如何在查询中设计、
组织和操作这些结构不仅取决于要查询哪些数据,也取决于数据的结构。如果连这些
信息都要隐藏起来,那么也就根本没有使关系数据库的必要了。
既要满⾜应⽤程序屏蔽底层关系数据库复杂性的期望,又要满⾜使⽤关系数据库所必
要的繁复,这种⽭盾被称为“对 -关系的阻抗不匹配” 问题。SQLAlchemy采⽤了⼀些
新颖的⽅法来解决这个问题。
SQLAlchemy 的数据库抽 层
SQLAlchemy认为开发⼈员必须要考虑他或者她的数据的关系形式。预判并隐藏数据
库schema和查询的系统所设计的⾏为只会降低使⽤关系数据库的必要性,进⽽导致阻
抗不匹配所带来的⼀系列经典问题。*)
但同时,这些⾏为的实现应该也必须执⾏在⼀个尽可能⾼的层次上。将⼀个对 模型
和⼀个schema关联起来并通过SQL语句将对 持久化是⼀项重复性极⾼的任务。使⽤
⼯具来将这些任务⾃动化才能开发出更加简洁、⾼效和强⼤的应⽤程序。⽽⼿动实现
这些操作的应⽤程序所需的开发时间将会是它的数倍。*)
因此,SQLAlchemy对⾃⼰的定位是⼀个⼯具包 ,这是为了强调开发者才是所有关系
结构以及这些结构和应⽤程序之间的联系的设计者和构造者,⽽不是第三⽅库的盲⽬
使⽤者。通过开放“关系” ,SQLAlchemy实现的理念是“不完全抽 ” ,*)它不利开发
者在应⽤程序和关系数据库之间⾃定义⼀个⾃动化的交互层。SQLAlchemy的创新在
于它能够在不牺牲对关系数据库的控制能⼒的前提下做到⾼度的⾃动化。
20.2.两个世界:核⼼层 (Core )与对象关系映射层
(ORM )
为了达到⼯具包这个⽬标,SQLAlchemy将与数据库交互的每⼀层都开放成为了⼀组
成熟的API ,这产⽣了两种主要的交互⽅式,分别是核⼼层 (Core )和对 关系映射
层 (ORM )。核⼼层负责和Python的数据库API (DBAPI )的交互、拼接数据库能够
理解的SQL语句并管理schema 。这些功能都对应着公开的API 。
图20 .1的SQLAlchemy的层图
核⼼/ ORM SQLAlchemy的分离⼀直是最本质的特征,它既有优点和缺点。⽬前在
SQLAlchemy的明确的
您可能关注的文档
- 基于嵌入式计算机系统数字视频监控系统开发研究.pdf
- 基于社会空间正义转型期中国城市更新批判_张京祥.pdf
- 基于时间动态口令令牌技术规范.pdf
- 基于属性访问控制模型.pdf
- 基于特征点全自动无缝图像拼接方法.pdf
- 基于图像场能分析指纹图像增强.pdf
- 基于图形化编程语言Labview设计虚拟仪器方法.pdf
- 基于网络核电站PSA数据库管理系统设计研究.pdf
- 基于系统优化城市慢行交通规划研究综述.pdf
- 基于遗传算法人工生命演示系统设计.pdf
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
最近下载
- 《常考题》初中八年级数学上册第十三章《轴对称》习题(含答案解析).docx VIP
- 《事件相关电位入门》课件.ppt VIP
- 《儿童骨科疾病诊断》课件.ppt VIP
- 公司战略与风险管理 第3版 吕文栋 教学大纲+教案1--3.doc
- 12SG121-1 施工图结构设计总说明(混凝土结构) .docx VIP
- 一种实验室危化品试剂进出库智能化管控系统及管控方法.pdf VIP
- 专练08:读后续写-2020-2021学年高一英语下学期期末题型专项训练.docx VIP
- 动脉血标本采集技术操作考核及评分标准.docx
- AI驱动的知识图谱:混合式教学模式创新研究.docx VIP
- AI辅助混合式教学设计实践与效果评估.docx VIP
文档评论(0)