quick_orm 简介

27
quick_orm 简简 Tyler Long http://www.tylerlong.me

description

quick_orm 简介, quick_orm 快速上手. 怎么用quick_orm为stackoverflow这样的问答网站建模

Transcript of quick_orm 简介

Page 1: quick_orm 简介

quick_orm 简介

Tyler Long

http://www.tylerlong.me

Page 2: quick_orm 简介

quick_orm 是什么

Python ORM 框架

基于 SQLAlchemy

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

pypi: http://pypi.python.org/pypi/quick_orm

Page 3: quick_orm 简介

quick_orm 特点

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

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

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

free: BSD license

powerful: 基于 SQLAlchemy, 最强大的 Python ORM

Page 4: quick_orm 简介

一分钟快速上手 安装 : pip install quick_orm

Page 5: quick_orm 简介

博客建模

除了第一行和最后一行 , 其它的代码就是很普通的 Python 类 数据建模就是写 Python 类 , 不需要你掌握复杂的建模规则

Page 6: quick_orm 简介

问答网站建模 - 初始版本

Page 7: quick_orm 简介

问答网站建模 - 添加评论模块 需要能对问题进行评论

需要能对回答进行评论

需要能对评论本身进行评论 可以评论别人的评论 , 于是形成了树形结构的评论记录 问题是如何进行数据建模呢 ? 貌似是个棘手的问题啊 !

Page 8: quick_orm 简介

问答网站建模 - 表继承

Page 9: quick_orm 简介

问答网站建模 - 粉丝与站内信 用户需要有粉丝

要能发站内信

Page 10: quick_orm 简介

问答网站建模 - 标签 需要能对问题 , 回答 和评论进行标签

Page 11: quick_orm 简介

问答网站建模 - 重构

Page 12: quick_orm 简介

问答网站建模 - 继续重构

Page 13: quick_orm 简介

问答网站建模 - 最终模型

Page 14: quick_orm 简介

quick_orm 好在哪里 ?

让代码说话 一个典型的问答网站 : 用户 , 问题 , 回答 , 评论 , 标签 , 粉丝 , 站内信 最终数据建模代码 28 行 ( 含空白行 )

数据模型建好之后 , 数据表可以自动生成 , 数据的插入和查询接口全部搞定 !

我想不出 , 如果还有更好用的 ORM 框架 ,

到底还能在哪方面改进 ?

Page 15: quick_orm 简介

运行一下看看

生成的数据表 :

Page 16: quick_orm 简介

数据插入

Page 17: quick_orm 简介

数据查询

执行结果 :

Page 18: quick_orm 简介

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

执行结果 :

Page 19: quick_orm 简介

quick_orm vs. SQLAlchemy

不太好比 , 因为 quick_orm 基于 SQLAlchemy

就好像 Ubuntu vs. Linux 内核

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

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

Page 20: quick_orm 简介

SQLAlchemy 建模多对多关系

用 quick_orm 建模的话 :

Page 21: quick_orm 简介

SQLAlchemy 建模表继承

用 quick_orm 建模的话 :

Page 22: quick_orm 简介

把问答网的模型用 SQLAlchemy 重建一遍 ?!

这个 ... 太复杂了 ... 我搞不定 . 感兴趣自己尝试下吧 .

Page 23: quick_orm 简介

SQLObject

http://sqlobject.org/

SQLAlchemy 之外的知名的 Python ORM 框架

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

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

y 全

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

也可以反过来理解 : SQLAlchemy 的接口设计得太复杂了

Page 24: quick_orm 简介

SQLObject 建模多对多关系

用 quick_orm 建模的话 :

Page 25: quick_orm 简介

SQLObject 建模表继承

用 quick_orm 建模的话 :

Page 26: quick_orm 简介

quick_orm vs. SQLObject

从前面两个例子看出 , quick_orm 和 SQLObject 使用都很简单 .

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

bject 的社区 .

quick_orm 功能上强于 SQLObject. ( 因为 quick_orm 是基于 SQL

Alchemy 的 )

Page 27: quick_orm 简介

Q & A

有更多问题欢迎到 github 项目主页提交 issue: https://github.com/tylerlong/quick_orm/issues

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