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 协议 ,转载请注明出处!