Python的ORM框架:SQLAlchemy

14 篇文章 0 订阅
12 篇文章 1 订阅

什么是ORM

对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据(描述数据的数据),将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示着额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。

什么是SQLAlchemy

SQLAlchemy是Python SQL工具箱和对象关系映射器,为应用程序开发人员提供了SQL的全部功能和灵活性。
它提供了一整套知名的企业级持久性模式,旨在高效,高性能地访问数据库,并被适配为简单的Pythonic域语言。

安装

  • 打开CMD,输入命令: pip install sqlalchemy

使用

  • 首先我们创建测试用的user
    在这里插入图片描述
  • 然后编辑代码,创建连接,并初始化生成DBSession
  • 配置根据自己实际情况修改
    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker,scoped_session
    engine = create_engine('mysql+mysqlconnector://root:password@localhost:3306/test?charset=utf8mb4')
    DBSession = sessionmaker(bind=engine)
    #推荐使用,保证线程安全
    Session = scoped_session(DBSession)
    
  • 新增代码,完成表的class定义
    from sqlalchemy import Column, String
    from sqlalchemy.ext.declarative import declarative_base
    # 创建对象的基类:
    Base = declarative_base()
    #定义User对象:
    class User(Base):
        # 表的名字:
        __tablename__ = 'user'
        # 表的结构:
        id = Column(String(20), primary_key=True)
        name = Column(String(20))
    
  • 如果有多个表,继续定义其他class即可

插入数据

  • 代码
    # 创建session对象:
    session = Session()
    # 创建新User对象:
    new_user = User(id='1', name='zp')
    # 添加到session:
    session.add(new_user)
    # 提交即保存到数据库:
    session.commit()
    # 关闭session:
    session.close()
    
  • 执行结果
    在这里插入图片描述

查询数据

  • 代码
    # 创建Session:
    session = Session()
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    user = session.query(User).filter(User.id=='1').one()
    # 打印类型和对象的name属性:
    print('type:', type(user))
    print('name:', user.name)
    # 关闭Session:
    session.close()
    
  • 执行结果
    在这里插入图片描述

修改数据

  • 代码
    # 创建Session:
    session = Session()
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    user = session.query(User).filter(User.id=='1')
    #修改值
    user.update({User.name:'coderyyn'})
    # 提交即保存到数据库:
    session.commit()
    # 关闭Session:
    session.close()
    
  • 执行结果
    在这里插入图片描述

删除数据

  • 代码
    # 创建Session:
    session = Session()
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    user = session.query(User).filter(User.id=='1').one()
    #删除值
    session.delete(user)
    # 提交即保存到数据库:
    session.commit()
    # 关闭Session:
    session.close()
    
  • 执行结果
    在这里插入图片描述

小结

ORM框架的作用就是把数据库表的一行记录与一个对象互相做转换

项目里面真正使用它的时候还需要进行合理的封装

我的个人博客网站是:www.coderyyn.cn
上面会不定期分享有关爬虫、算法、环境搭建以及有趣的帖子
欢迎大家一起交流学习

转载请注明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值