python 的 ORM

1.程序分层架构
软件分层的两种含义:物理分层&逻辑分层
分层架构实例: 

软件分层的优点
伸缩性  可维护性 可扩展性 可重用性 可管理性 
软件分层的缺点
人员要求高  调试困难

2.ORM概述
ORM是对象关系映射的缩写,是面向对象编程语言与面向关系数据库之间的一个桥梁,在软件分层架构中处于持久层的位置。

ORM原理图:

ORM技术优势:
(1)“封闭”的通用数据库交互模式,隐藏数据访问细节
(2)简化数据结构的固化过程

3.python ORM框架举例:
(1)SQLObject  

采用了易于理解的active recoder模式,代码库相对比较小;   不足之处是方法和类的命令遵守驼峰风格,不支持工作单元的隔离和数据库会话机制

(2)Storm      

API非常干净,很轻便,易于学习和维护,而且不需要特殊的构造函数和基类;  缺点是不能自动的通过模型类派生出数据库表,这使得程序员不得不手工编写建表的语句

(3)Django ORM  

学习曲线比较平缓,和django框架结合很紧密,这使得它在django框架中成了一种事实上的数据库处理标准;  不足之处是不能很好的处理复杂的查询请求,使得开发者不得不亲自编写sql语句来实现很复杂的查询功能。

(4)Peewee      

轻量级的ORM实现,很容易和各种类型的web框架相结合;   不支持自动的模式迁移,不方便进行多对多的查询

(5)PonyORM    

易于安装和使用,语法也简便,能够自动优化数据库的查询操作;    缺点是没有设计良好的机制来处理高并发的操

(6)SQLAlchemy  

拥有企业级的API,代码健壮,适应性很强,设计很灵活,可以轻易的编写很复杂的查询语句;    不足之处是API学习起来比较复杂些

4.SQLAlchemy 的介绍与安装
SQLAlchemy特色
(1)支持工作单元的概念
(2)会话(session)管理机制
(3)擅长处理多数据库的情况
SQLAlchemy框架简介:
The Python SQL Toolkit and Object Relational Mapper 
SQLAlchemy理念:
融合数据库和对象集合的优势

5.创建第一个SQLAlchemy应用

#创建链接
from sqlalchemy import create_engine
engine = create_engine('mysql://root:123456@127.0.0.1:3306/sqlalchemy',echo=True)  #echo=True打印终端信息
#声明映射文件
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

from sqlalchemy import Column,Integer,String
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer,primary_key=True)
    name = Column(String(10))
User.metadata.create_all(engine)

#创建会话
from sqlalchemy.orm import sessionmaker
session = sessionmaker(bind=engine)
    password = Column(String(10))

    def __repr__(self):
        return "<User(name='%s', name='%s', password='%s')>" % (self.id, self.name, self.password)

#创建数据库表
session = Session()

#持久化一个实例对象
ed_user = User(id=2, name='ed', assword='edpassword')
session.add(ed_user)
session.commit()


 

发布了105 篇原创文章 · 获赞 45 · 访问量 18万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览