专栏名称: 马哥Linux运维
马哥linux致力于linux运维培训,连续多年排名第一,订阅者可免费获得学习机会和相关Linux独家实战资料!
目录
相关文章推荐
51好读  ›  专栏  ›  马哥Linux运维

SQLAlchemy基本使用

马哥Linux运维  · 公众号  · 运维  · 2017-02-18 07:57

正文

云豆贴心提醒,本文阅读时间6分钟,文末有秘密!

ORM介绍

ORM(Object-Relational Mapping) 架构,采用元数据来描述对象-关系映射细节。业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系。我们平常使用的数据库都为关系型。所以ORM系统一般是以中间层的方式存在,用来关联对象和数据库数据的映射。 


由于现在流行的关系型数据库有很多,假设代码在部署的使用的底层数据库使用的MySQL,并已经正常稳定运行,但是现在需要将MySQL换成oracle,闹么将会需要将原来所编写的代码进行大批量的修改,导致重复的操作。所以使用一种中间层的方式,利用API对ORM进行调用,这样就无论底层的的数据库是什么类型,我们所修改的无非就是API参数即可,无需大幅度的修改代码。

SQLAlchemy介绍

SQLAlchemy是Python语言中一款开源软件的ORM工具,采用简单的Python语言,提供高性能的数据库访问,实现完整企业级持续模型。SQLAlchmey采用了类似于Java里Hibernate的数据映射模型,而不是其他ORM框架采用的Active Record模型。

  • 优点 
    1、设计灵活,代码健壮性和适应性 
    2、丰富的社区群体 
    3、丰富的插件以及和扩展

  • 缺点 
    1、重量级的API,学习曲线比较长 
    2、对于复杂的联合查询,使用where过滤编写查询语句较为复杂

准备和初始化阶段

导入SQLAlchemy所需的库文件

初始化DBSession

定义Host对象

创建所有表结构

Base.metadata.create_all(engine)

代码测试快

基本操作

插入数据


最终显示结果

提交操作

    # 回滚操作
   # session.rollback()  
   # 提交所修改的操作
   # session.commit()

查询操作

1、query查询使用


2、匹配过滤 
常用匹配方式(此处不会列全,仅做参考) 
==, !=, in, like, and_, or_等 
其中 and_ 和 or_ 还需要在 sqlalchemy 导入模块才可使用

from sqlalchemy import or_,and_

例子


3、返回的值为列表


4、统计数量 
使用是需要导入func模块


5、其他可能会用到的

group_by()order_by()
   group_by():分组查询
   order_by():排序

修改








    今日值班: 马哥教育二号女神学习顾问,可甜蜜贴心沟通,可严谨职业指导,爱水果也爱生活,会创意更爱学习,陪伴你的成长之路。

    内容沟通、职业成长和课程学习,可添加学习顾问:

    【扫一扫即可撩】


特别提醒

马哥教育与腾讯课堂联办的Python全栈工程师课程新课上线,优惠

福利一:新课上线,联合腾讯课堂特惠8折,老学员报名7折【每日限额】;

福利二:买一赠八,赠送马哥教育Linux基础教程8套【仅限本期】;