sqlalchemy

SqlAlchemy - 数据库Orm

May 16, 2024
orm, sqlalchemy

Sqlalchemy异步操作不完全指北 # 不完全抄袭自: 米洛丶 - 博客园 cnblogs.com 异步SQLAlchemy # SQLAlchemy作为一款通用的Python Orm工具,在最近的版本也支持了异步操作。但网上很多资料都不是很齐全,API也不是很好查询的情况下,我便有了整理一份基础文档的想法。文章主要会以CRUD为入口,解决大家最基本的需求。 engine的区别 # 在普通的SQLAlchemy中,建立engine对象,我们会采用下面的方式: from sqlalchemy import create_engine engine = create_engine(SQLALCHEMY_DATABASE_URI, pool_recycle=1500) 而异步的方式如下: from sqlalchemy.ext.asyncio import create_async_engine async_engine = create_async_engine(ASYNC_SQLALCHEMY_URI, pool_recycle=1500) 链接参数 # from sqlalchemy.ext.asyncio import create_async_engine async_engine = create_async_engine( SQLALCHEMY_DATABASE_URL, pool_size=10, # 设置最大连接池大小 max_overflow=20, # 设置最大溢出连接数 pool_timeout=30, # 设置获取连接的超时时间(单位:秒) pool_recycle=1500, # 设置连接回收时间(单位:秒) echo=True # 设置为True以便于调试,显示SQL日志 ) session的区别 # 我们一般用sessionmaker来建立session,不过异步的有点区别: from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import sessionmaker # 同步session Session = sessionmaker(engine) # 异步session 区别在于需要指定对应的class_ async_session = sessionmaker(async_engine, class_=AsyncSession) 建立会话 # 我们还是以代码的形式展示: ...