Your SlideShare is downloading. ×
0
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Sql Alchemy Story
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Sql Alchemy Story

2,055

Published on

091119 珠海金山软件.研发改进中心 …

091119 珠海金山软件.研发改进中心
COFFEE时间分享幻灯
讲师 刘鑫

Published in: Technology
1 Comment
6 Likes
Statistics
Notes
  • 啊。。。这是刘鑫的那个课件~~~~~~~~
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
2,055
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
1
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SQLAlchemy 简介 全功能数据访问框架 SQLAlchemy
  • 2. ORM 项目开发常见的体系结构: UI Middle Layer BR Database Access Layer ORM DAO Database Access Driver DATABASE
  • 3. ORM与数据访问工具 ORM 通常位于业务逻辑与数据驱动之间 简化数据库访问编码量 提高项目移植性 提高项目质量
  • 4. Python 领域中的 ORM 基于动态语言的便利性,Python 领域出现了多个ORM框架。 SQLAlchemy SQLObject Storm Django ORM Web2py DAL webpy ORM ...
  • 5. ORM 评估与选型 能简化编码量 与应用层逻辑良好结合 对数据库友好 将关系数据模型友好的映射为对象结构 支持业务所需的数据类型 支持定制的局部查询 支持原始SQL 可移植 可扩展nt
  • 6. SQLAlchemy 评价 能有效简化复杂查询 对应用层友好 允许数据模型与业务逻辑对象分离 支持局部映射和多映射 对数据库友好 允许对象化的定制查询 允许执行可参数化的原生SQL语句 支持大量的数据类型 允许扩展数据类型 可移植性良好 支持常用的多种数据库/源 提供丰富的通用方法 提供强大的扩展能力
  • 7. SQLAlchemy 体系
  • 8. SQLAlchemy 体系—— Engine Engine 提供数据驱动接口 连接池 URI format link (postgres://user:***@server/database) 允许直接执行SQL(ddl/dml) 允许参数化操作 bind to all others 可以直接建立 SQLite 数据库 对象化结果集
  • 9. SQLAlchemy 体系—— Session Session 是 DML 操作的核心组件 支持对象化的 SQL Expression 支持 Query 对象的迭代式生成和惰性执行 支持 Select 表达式执行 支持原始SQL
  • 10. SQLAlchemy 体系—— MetaData MetaData 是 DDL 操作的核心组件 支持数据结构定义生成为数据库结构 支持数据库结构反射 为查询和数据库定义组件提供依据 允许
  • 11. SQLAlchemy 体系—— TABLE Table 类型定义数据库映射结构 支持数据结构定义生成为数据库结构 支持数据库结构反射 为查询组件提供表结构 支持独立的约束定义(或定义于每个 Column 对象) 不依赖ID列 允许定义各种复杂的关系
  • 12. SQLAlchemy 体系—— Mapper Mapper 为业务类型和数据库定义提供中间连接 允许在Mapper中详细定义数据关系和字段 允许定义各种组合类型字段 支持常见关系模式 http://www.sqlalchemy.org/docs/05/ormtutorial.html 基于 relation 允许定制惰性级别
  • 13. SQLAlchemy 应用——访问数据库 最简单的使用可以直接调用 engine from sqlalchemy import create_engine engine = create_engine(uri) res = engine.execute 可以增加 session 支持 from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) session = Session() session.execute
  • 14. SQLAlchemy 应用——访问数据库 定义表 from sqlalchemy.orm import Table, Column, String,... table = Table(name, metadata, ...) table = Table(name, metadata, ..., autoload=True) session 支持Query操作 session.query(table).filter_by(...).filter(...).scalar() session.query(table).filter_by(...).filter(...).count() session.query(table).filter_by(...).filter(...).all() ...
  • 15. SQLAlchemy应用——业务对象分离 定义业务对象 class BR(object):pass 可以在此编写数据无关的测试代码 定义数据模型 table = Table(...) 定义映射 mapper properties include/exclude_properties relation
  • 16. SQLAlchemy Tips 可以简化模型定义 Declaratively 可以反射数据库结构 metadata.reflect(bind=engine) SqlSoup table.tometadata Adapting Tables to Alternate Metadata
  • 17. SQLAlchemy 实践 Umass 统计项目 快速查询 复杂查询的映射和比对 业务逻辑分离 KUSE 搜索引擎项目 快速构造查询 灵活的即用查询集 特化数据类型的运用 特化运算符的使用 Socrates 语义模型存储工具 展望 特化的动态数据类型支持 高可移植性

×