海底暴风雪

富在术数不在劳身,利在局势不在力耕

SqlAlchemy2.0学习笔记

由于一直在使用django的orm,同时公司又没有真正的商业化的或者是高并发的相关业务,所以在这里学习一下python最流行的orm来扩充自己,当然了,最牛逼的还得是手撕sql,不多BB了

起因

学习orm是因为开始看FastAPI框架,其中推荐的就是SqlAlchemy,看了SqlAlchemy官网的2.0教程,在结合一个现有的项目,想使用FastAPI+SqlAlchemy改写,于是就有了这篇笔记

正文

创建连接池

连接池被很多的orm使用,可以看作是一个比较优秀的设计,可以在高并发下有很好的性能,但是django没有,我能说什么呢
创建连接池

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')

在项目中这一步分还是应该使用配置文件来加载,FastAPI可以像Django一样热重载

Core层直接查询

core层可以直接使用sql查询,同时也可以使用事务,配合with关键字实现事务的自动提交,详细查看

orm

数据模型的定义

猝,有点难搞,后续继续

搜索

文章分类