SlideShare a Scribd company logo
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

More Related Content

PPTX
Web testing automation
PDF
网站前端代码静态检查工具研究
PDF
Tutorial of eclipse
PDF
Beta testing with CI
PPTX
试玩前端测试的前因后果
PPTX
试玩前端测试的前因后果
PDF
网站前端代码静态检查工具综述
PDF
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践
Web testing automation
网站前端代码静态检查工具研究
Tutorial of eclipse
Beta testing with CI
试玩前端测试的前因后果
试玩前端测试的前因后果
网站前端代码静态检查工具综述
美团点评技术沙龙06 - 滴滴移动端测试解耦工具实践

Viewers also liked (6)

PPTX
MoRally slides for slideshare
PPTX
PayLease Overview
PPTX
Rails automatic test driven development
PPTX
Virtual Poster Session
PPTX
Brochure2
PPTX
What have you learnt about technologies during this
MoRally slides for slideshare
PayLease Overview
Rails automatic test driven development
Virtual Poster Session
Brochure2
What have you learnt about technologies during this
Ad

Similar to quick_orm 简介 (6)

PDF
Sql Alchemy Story
PDF
Python 数据库技术第三讲
PPT
Uliweb比较与实践 2013
PDF
LazyRecord: The Fast ORM for PHP
PDF
Python 庫簡介
PPT
深入学习Mongo db
Sql Alchemy Story
Python 数据库技术第三讲
Uliweb比较与实践 2013
LazyRecord: The Fast ORM for PHP
Python 庫簡介
深入学习Mongo db
Ad

quick_orm 简介