什么是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
上面会不定期分享有关爬虫、算法、环境搭建以及有趣的帖子
欢迎大家一起交流学习
转载请注明