SQLAlchemy-ORM-Python
本文最后更新于:2020年9月27日 晚上
简介
SQLAlchemy是Python的SQL``ORM工具SQLAlchemy提供了一整套的持久化方式,提供高性能的数据库访问
特性
SQLAlchemy是一个强大的ORM,基于关系映射和核心Core制作- 可以通过操作对象模型,实现SQL的全部功能(包括连接查询,关联等)
- 拥有一个灵活全面的系统,它可以快速的加载
Collections与Objects``Collections被缓存在一个Session中,可以一次性查询整个结果也可以单个来进行访问 SQLAlchemy``Core独立于ORM,它本身是一个完整的数据库抽象层,包括可扩展的基于python的SQL表达式语言、模式元数据、连接池、类型强制和自定义类型- 所有主键和外键约束都是复合的和自然的。你可以自由组合
链接
| 信息 | 链接 |
|---|---|
| 官网 | https://www.sqlalchemy.org/ |
| 文档 | http://www.sqlalchemy.org/docs/ |
| github | https://github.com/sqlalchemy/sqlalchemy |
安装
1 | |
验证安装
1 | |
如果看到了版本信息,说明已经安装成功
使用
创建连接
1 | |
- echo参数
这个参数用于设置SQLAlchemy日志的记录- True 显示输出,你会在控制台看到所有信息
- False 这样做会减少输出信息的量
- create_engine函数
这个函数会返回一个Engine实例,它代表着数据库核心接口
调用方法以后,引擎会建立与数据库的真实DBAPI连接。连接以后将其用于发出SQL
声明映射关系类
声明映射关系的类是根据Base类定义的
你可以通过declarative_base()函数来获取Base类
1 | |
在有了Base类后你就可以声明映射关系的类了
1 | |
定义并不复杂,非常的简单明了,声明键类型与长度,添加注释
这个类虽然代表了映射关系,但它本身依旧可以定义和使用成员函数/属性
meatadata是一个包含了生成命令的注册机
你可以使用MetaData.create_all()来创建表
1 | |
创建映射关系实例
1 | |
就算你没有声明构造函数,它也能根据传进来的参数对对应的项进行赋值
创建会话
使用create_engine()来创建一个Session类(需要传入一个engine)
1 | |
这个定制的Session类将创建绑定到我们数据库的新Session对象
每当需要与数据库进行对话时,都可以实例化一个Session
插入/更新 数据
将实例用session.add()方法添加到Session中,以持久化
1 | |
在执行完这些代码以后,实例会被挂起,并没有发出SQL给数据
但如果你通过这个Session使用查询功能,这个实例会被找到
你可以通过add_all函数一次性添加多个实例
1 | |
当你真的希望向数据库发送SQL提交事务时可以使用session.commit()
1 | |
回滚
当发生一些冲突(如重复的主键之类的问题时)可以用回滚操作来让Session中的实例回归正常状态
1 | |
查询
使用session.query()方法,传入关系映射类作为参数来进行查询
1 | |
可以指定返回的键
1 | |
all()方法会返回所有结果,在数据量较多时,一次性全载入内存可能会引起问题
类似的,first()方法会返回第一个结果
可以查询特定的键为某个值的数据
1 | |
结合order_by与切片功能来使用
1 | |
过滤结果
1 | |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!