SQLAlchemy 2.0
SQLAlchemy 2.0
本文档使用 MrDoc 发布
-
+
首页
SQLAlchemy 2.0
SQLAlchemy 是 Python 生态系统中最流行的 ORM。SQLAlchemy 设计非常优雅,分为了两部分——底层的 Core 和上层的传统 ORM。在 Python 乃至其他语言的大多数 ORM 中,都没有实现很好的分层设计, 比如 django 的 ORM,数据库链接和 ORM 本身完全混在一起。 ![](/media/202302/2023-02-15_213306_2239570.8245860120264487.png) ## 为什么要有 Core Core 层主要实现了客户端连接池。我们知道,作为现代 Web 应用的核心,关系型数据库的并发连接 能力往往并不是很强,一般不要搞好多短连接过去,大多数情况下需要一个连接池。连接池大体分为 两种,一种在服务端,也就是一个专门的连接池中间件,给短连接每次分配一个长链接复用。另一种 在客户端,一般作为第三方库引入代码中。SQLAlchemy 的连接池显然是客户端的。在这个连接池中, SQLAlchemy 维护了一定数量的长连接,当调用 connect 时,实际是从池子中取出了一个链接, 调用 close 时,实际是放回到了池子中一个链接。 ### 创建链接 SQLAlchemy 中使用 create_engine 来创建连接(池)。create_engine 的参数是数据库的 URL。 ``` from sqlalchemy import create_engine engine = create_engine( "mysql://user:password@localhost:3306/dbname", echo=True, # echo 设为 True 会打印出实际执行的 sql,调试的时候更方便 future=True, # 使用 SQLAlchemy 2.0 API,向后兼容 pool_size=5, # 连接池的大小默认为 5 个,设置为 0 时表示连接无限制 pool_recycle=3600, # 设置时间以限制数据库自动断开 ) # 创建一个 SQLite 的内存数据库,必须加上 check_same_thread=False,否则无法在多线程中使用 engine = create_engine("sqlite:///:memory:", echo=True, future=True, connect_args={"check_same_thread": False}) # pip install mysqlclient engine = create_engine('mysql+mysqldb://user:password@localhost/foo?charset=utf8mb4') ``` ## Core 层 -- 直接使用 SQL ### CRUD
admin
2023年2月15日 22:08
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码