Sqlalchemy Gino引擎未初始化

Sqlalchemy Gino引擎未初始化,sqlalchemy,python-asyncio,aiohttp,Sqlalchemy,Python Asyncio,Aiohttp,我正在尝试使用aiohttp和Gino创建一个简单的restfulapi 在endpoint类中,我得到了以下内容: class ListEndpoint(Endpoint): def __init__(self, model): super().__init__() self.model = model async def get(self) -> Response: async with db.with_bind(DB_ADDRESS): ob

我正在尝试使用aiohttp和Gino创建一个简单的restfulapi

在endpoint类中,我得到了以下内容:

class ListEndpoint(Endpoint):
def __init__(self, model):
    super().__init__()
    self.model = model

async def get(self) -> Response:
    async with db.with_bind(DB_ADDRESS):
        obj_list = await self.model.query.gino.all()

    if not obj_list:
        return Response(
            status=404,
            body=json.dumps({'Not found': 404}),
            content_type='application/json'
        )

    data = await ModelSerializer(obj_list).to_json()

    return Response(
        status=200, body=data, content_type='application/json'
    )
这是我唯一叫吉诺的地方。这是我的main.py:

from aiohttp.web import Application, run_app

from models import Country
from resource import GenericResource


app = Application()
countries = GenericResource('countries', Country)
countries.register(app.router)


if __name__ == '__main__':
    run_app(app)
当我使用GET请求调用路由时,会出现以下错误:

Gino引擎未初始化

它在这方面失败了:

async with db.with_bind(DB_ADDRESS):
    obj_list = await self.model.query.gino.all()

这是个不好的地方吗?或者,正如我能想到的,这个问题的原因是,当设置obj_列表时,这个代码进入事件循环,没有时间绑定。

问题是我在不同的文件中创建了不同的Gino类实例。这是错误的。作为一个解决方案,您应该只创建一个Gino实例,并在不同的文件之间共享它。

这太晚了,但是这里不可能看到您如何声明
db
。声明
db
的位置并不重要,但所有异步调用都应该在同一个事件循环中。你的代码看起来不错