SQLALchemy 异步操作以及在FastAPI中的用例

mysql为例,不做额外配置。创建异步引擎from sqlalchemy.ext.asyncio import create_async_engineurl = "mysql+aiomysql://root:*****@127.0.0.1:3306/demodemo?charset=utf8"async_egn = create_async_engine(url)metadata两种方式 一种是Table收集 一种是Mapper类声明Table收集第一个参数是表名
摘要由CSDN通过智能技术生成

mysql为例,不做额外配置。

创建异步引擎

from sqlalchemy.ext.asyncio import create_async_engine
url = "mysql+aiomysql://root:*****@127.0.0.1:3306/demodemo?charset=utf8"
async_egn = create_async_engine(url)

metadata

两种方式 一种是Table收集 一种是Mapper类声明

Table收集

第一个参数是表名

from sqlalchemy import MetaData
metadata = MetaData()

from sqlalchemy import Table
from sqlalchemy.types import Integer,String

User = Table(
    "user",
    metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String(30))
)


 Mapper类声明

获取Base的方法非常多

from sqlalchemy.orm import registry
mapper_registry = registry()
Base = mapper_registry.generate_base()

# mapper_registry.metadata即为MetaData单例


class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    name = Column(String(30))

# User.__table__  可以获取到Table版的User

execute

分为连接和会话两种 区别不大 

使用连接

async with async_egn.connect() as conn:
    result = await conn.execute(...)
    print(result.fetchall())

async with async_egn.connect() as conn:
    async_result = await conn.stream(...)
    async for row in async_result:
        print(row)
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastAPI是一个现代的Web框架,它支持异步编程和SQLAlchemy ORM。使用FastAPISQLAlchemy ORM可以轻松地构建高性能的Web应用程序。 在FastAPI使用SQLAlchemy ORM时,可以使用asyncio和async/await语法来实现异步操作。这样可以提高应用程序的性能和吞吐量。 要在FastAPI使用SQLAlchemy ORM,需要安装SQLAlchemy和asyncpg(或其他支持异步PostgreSQL的库)。然后,可以使用SQLAlchemyORM来定义模型,并使用async/await语法来执行数据库操作。 以下是一个使用FastAPISQLAlchemy ORM的示例: ```python from fastapi import FastAPI from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker app = FastAPI() SQLALCHEMY_DATABASE_URL = "postgresql://user:password@localhost/dbname" engine = create_engine(SQLALCHEMY_DATABASE_URL) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True, index=True) name = Column(String) email = Column(String, unique=True) @app.post("/users/") async def create_user(name: str, email: str): db = SessionLocal() user = User(name=name, email=email) db.add(user) db.commit() db.refresh(user) return user ``` 在上面的示例,我们定义了一个User模型,并在create_user函数使用async/await语法来执行数据库操作。我们使用SessionLocal来创建数据库会话,并使用add方法将新用户添加到数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值