SlideShare ist ein Scribd-Unternehmen logo
1 von 27
quick_orm 简介

      Tyler Long
http://www.tylerlong.me
quick_orm 是什么

 Python ORM 框架


 基于 SQLAlchemy


 github: https://github.com/tylerlong/quick_orm


 pypi: http://pypi.python.org/pypi/quick_orm
quick_orm 特点

 quick: 一分钟快速上手 , 数据建模迅速直观


 easy: 使用容易 , 完全不需要懂 SQL, 自动建表


 simple: 核心代码仅 217 行 , bug 无处藏身


 free: BSD license


 powerful: 基于 SQLAlchemy, 最强大的 Python ORM
一分钟快速上手
 安装 : pip install quick_orm
博客建模




 除了第一行和最后一行 , 其它的代码就是很普通的 Python
  类
 数据建模就是写 Python 类 , 不需要你掌握复杂的建模规
  则
问答网站建模 - 初始版本
问答网站建模 - 添加评论模块
 需要能对问题进行评论




 需要能对回答进行评论




 需要能对评论本身进行评论
     可以评论别人的评论 , 于是形成了树形结构的评论记录
     问题是如何进行数据建模呢 ? 貌似是个棘手的问题啊 !
问答网站建模 - 表继承
问答网站建模 - 粉丝与站内信
 用户需要有粉丝




 要能发站内信
问答网站建模 - 标签
 需要能对问题 , 回答 和评论进行标签
问答网站建模 - 重构
问答网站建模 - 继续重构
问答网站建模 - 最终模型
quick_orm 好在哪里 ?

让代码说话
    一个典型的问答网站 : 用户 , 问题 , 回答 , 评论 , 标签 , 粉丝 , 站
     内信
    最终数据建模代码    28 行 ( 含空白行 )
    数据模型建好之后 , 数据表可以自动生成 , 数据的插入和查询接口
     全部搞定 !



 我想不出 , 如果还有更好用的 ORM 框
  架 , 到底还能在哪方面改进 ?
运行一下看看




 生成的数据表 :
数据插入
数据查询




 执行结果 :
功能扩展举例 - 投票功能
  比如我想添加投票功能 , 包括 " 顶 " 和 " 踩 " 两种投票类型
  需要能对问题 , 回答和评论进行投票




 执行结果 :
quick_orm vs. SQLAlchemy
 不太好比 , 因为 quick_orm 基于 SQLAlchemy


 就好像 Ubuntu vs. Linux 内核


 理论上讲 , SQLAlchemy 支持的功能 , quick_orm 全部都支持


 为什么不直接用 SQLAlchemy 呢 ?
     SQLAlchemy 建模表和表之间的关系的时候 , 比较冗长复杂
     一旦表和表之间的关联关系增多 , 可维护性与可读性急剧下降
     于是另外一款功能弱但使用简单的 ORM 会被一部分人追捧 :
      SQLObject
SQLAlchemy 建模多对多关系




 用 quick_orm 建模的话 :
SQLAlchemy 建模表继承




 用 quick_orm 建模的话 :
把问答网的模型用 SQLAlchemy 重建一遍 ?!




 这个 ... 太复杂了 ... 我搞不定 . 感兴趣自己尝试下吧 .
SQLObject
 http://sqlobject.org/


 SQLAlchemy 之外的知名的 Python ORM 框架


 功能不如 SQLAlchemy 强大 , 但是使用起来简单


 有一些人在用 , 社区没有 SQLAlchemy 大 , 文档没有
  SQLAlchemy 全


 之所以它能在 SQLAlchemy 眼皮底下成长起来 , 就是因为它简
  单


 也可以反过来理解 : SQLAlchemy 的接口设计得太复杂了
SQLObject 建模多对多关系




 用 quick_orm 建模的话 :
SQLObject 建模表继承




 用 quick_orm 建模的话 :
quick_orm vs. SQLObject
 从前面两个例子看出 , quick_orm 和 SQLObject 使用都很简单 .


 quick_orm 兼容 SQLAlchemy, 事实上 quick_orm 用户碰到问
  题大都去查 SQLAlchemy 的文档 . SQLAlchemy 的社区远大于
  SQLObject 的社区 .


 quick_orm 功能上强于 SQLObject. ( 因为 quick_orm 是基于
  SQLAlchemy 的 )
Q&A
 有更多问题欢迎到 github 项目主页提交 issue:
     https://github.com/tylerlong/quick_orm/issues


 也欢迎到我的博客空间进行交流 ;
     http://www.tylerlong.me

Weitere ähnliche Inhalte

Andere mochten auch

MoRally slides for slideshare
MoRally slides for slideshareMoRally slides for slideshare
MoRally slides for slideshareJuma Al-JouJou
 
PayLease Overview
PayLease OverviewPayLease Overview
PayLease OverviewStacy Brown
 
Rails automatic test driven development
Rails automatic test driven developmentRails automatic test driven development
Rails automatic test driven developmenttyler4long
 
Virtual Poster Session
Virtual Poster SessionVirtual Poster Session
Virtual Poster Sessionyvovides
 
What have you learnt about technologies during this
What have you learnt about technologies during thisWhat have you learnt about technologies during this
What have you learnt about technologies during this06cuffale
 

Andere mochten auch (6)

MoRally slides for slideshare
MoRally slides for slideshareMoRally slides for slideshare
MoRally slides for slideshare
 
PayLease Overview
PayLease OverviewPayLease Overview
PayLease Overview
 
Rails automatic test driven development
Rails automatic test driven developmentRails automatic test driven development
Rails automatic test driven development
 
Virtual Poster Session
Virtual Poster SessionVirtual Poster Session
Virtual Poster Session
 
Brochure2
Brochure2Brochure2
Brochure2
 
What have you learnt about technologies during this
What have you learnt about technologies during thisWhat have you learnt about technologies during this
What have you learnt about technologies during this
 

Ähnlich wie quick_orm 简介

Uliweb比较与实践 2013
Uliweb比较与实践 2013Uliweb比较与实践 2013
Uliweb比较与实践 2013modou li
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Wade Huang
 
资身Dba经验谈
资身Dba经验谈资身Dba经验谈
资身Dba经验谈yiditushe
 
01 orm概述及持久化介绍
01 orm概述及持久化介绍01 orm概述及持久化介绍
01 orm概述及持久化介绍Zelin Wang
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2twMVC
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC
 
How to-become-ocm1
How to-become-ocm1How to-become-ocm1
How to-become-ocm1xiaoshi100a
 
淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题 Lumend
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
程式人雜誌 -- 2013年3月號
程式人雜誌 -- 2013年3月號程式人雜誌 -- 2013年3月號
程式人雜誌 -- 2013年3月號鍾誠 陳鍾誠
 
淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展taobao.com
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressAppzhoujg
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2daoopp
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC
 
Dynamic JS Loader
Dynamic JS LoaderDynamic JS Loader
Dynamic JS Loaderfeifeipan
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统melity78
 
Ruby rails分享
Ruby rails分享Ruby rails分享
Ruby rails分享Cam Song
 
ASP.NET MVC 5線上課程(入門前三天)
ASP.NET MVC 5線上課程(入門前三天)ASP.NET MVC 5線上課程(入門前三天)
ASP.NET MVC 5線上課程(入門前三天)MIS2000 Lab.
 
掌星 移动互联网开发笔记-Vol002
掌星 移动互联网开发笔记-Vol002掌星 移动互联网开发笔记-Vol002
掌星 移动互联网开发笔记-Vol002rainx1982
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocketpwesh
 

Ähnlich wie quick_orm 简介 (20)

Uliweb比较与实践 2013
Uliweb比较与实践 2013Uliweb比较与实践 2013
Uliweb比较与实践 2013
 
Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有Asp.net mvc網站的從無到有
Asp.net mvc網站的從無到有
 
资身Dba经验谈
资身Dba经验谈资身Dba经验谈
资身Dba经验谈
 
01 orm概述及持久化介绍
01 orm概述及持久化介绍01 orm概述及持久化介绍
01 orm概述及持久化介绍
 
Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2Asp.net mvc 從無到有 -twMVC#2
Asp.net mvc 從無到有 -twMVC#2
 
twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有twMVC#02 | ASP.NET MVC 從無到有
twMVC#02 | ASP.NET MVC 從無到有
 
How to-become-ocm1
How to-become-ocm1How to-become-ocm1
How to-become-ocm1
 
淘宝网前端开发面试题
淘宝网前端开发面试题 淘宝网前端开发面试题
淘宝网前端开发面试题
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
程式人雜誌 -- 2013年3月號
程式人雜誌 -- 2013年3月號程式人雜誌 -- 2013年3月號
程式人雜誌 -- 2013年3月號
 
淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展
 
信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp信息系统开发平台OpenExpressApp
信息系统开发平台OpenExpressApp
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
 
Dynamic JS Loader
Dynamic JS LoaderDynamic JS Loader
Dynamic JS Loader
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
Ruby rails分享
Ruby rails分享Ruby rails分享
Ruby rails分享
 
ASP.NET MVC 5線上課程(入門前三天)
ASP.NET MVC 5線上課程(入門前三天)ASP.NET MVC 5線上課程(入門前三天)
ASP.NET MVC 5線上課程(入門前三天)
 
掌星 移动互联网开发笔记-Vol002
掌星 移动互联网开发笔记-Vol002掌星 移动互联网开发笔记-Vol002
掌星 移动互联网开发笔记-Vol002
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocket
 

quick_orm 简介