小编col*_*ole的帖子

具有异步调用的工厂男孩

我正在尝试将工厂男孩与异步 SQLAlchemy、具体 SQLModel ORM 一起使用,并且在调用工厂男孩创建方法时遇到问题,它仅创建实例 od 对象,但从未存储在数据库中。我的工厂男孩是这样的

session = scoped_session(
    sessionmaker(class_=AsyncSession, bind=engine, autoflush=False)
)


class BaseFactory(SQLAlchemyModelFactory):
    class Meta:
        model = InitialModel
        abstract = True
        sqlalchemy_session = session
Run Code Online (Sandbox Code Playgroud)

在 coftest 内部,我有 FastAPI 所需的会话

@pytest.fixture(scope="function")
async def session_fixture() -> AsyncSession:
    """Create a new session for a test and rollback changes after test"""
    async_session = sessionmaker(engine, class_=AsyncSession, autoflush=False)
    async with async_session() as session:
        yield session
        for table in reversed(SQLModel.metadata.sorted_tables):
            await session.execute(table.delete())
Run Code Online (Sandbox Code Playgroud)

我不确定会话是否有问题或异步调用是否有问题。当我对同一类型进行同步调用时,所有内容都已正确存储

python asynchronous sqlalchemy factory-boy fastapi

5
推荐指数
1
解决办法
1143
查看次数

标签 统计

asynchronous ×1

factory-boy ×1

fastapi ×1

python ×1

sqlalchemy ×1