富在术数不在劳身,利在局势不在力耕
由于一直在使用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层可以直接使用sql查询,同时也可以使用事务,配合with关键字实现事务的自动提交,详细查看
猝,有点难搞,后续继续
文章分类