Gino 引擎未初始化
Gino engine is not initialized
我正在尝试使用 aiohttp 和 Gino 创建一个简单的 Restful API。
在我的端点 class 中,我得到以下信息:
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'
)
这是我唯一叫gino的地方。这是我的 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 engine is not initialized.
它失败了:
async with db.with_bind(DB_ADDRESS):
obj_list = await self.model.query.gino.all()
绑定的地方不好吗?或者,正如我能想到的这个问题的原因,是这段代码进入事件循环并且在设置 obj_list 时没有时间绑定。
问题是我在不同的文件中创建了不同的 Gino 实例 class。这是错误的。作为解决方案,您应该只创建 1 个 Gino 实例并在不同文件之间共享它。
我正在尝试使用 aiohttp 和 Gino 创建一个简单的 Restful API。
在我的端点 class 中,我得到以下信息:
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'
)
这是我唯一叫gino的地方。这是我的 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 engine is not initialized.
它失败了:
async with db.with_bind(DB_ADDRESS):
obj_list = await self.model.query.gino.all()
绑定的地方不好吗?或者,正如我能想到的这个问题的原因,是这段代码进入事件循环并且在设置 obj_list 时没有时间绑定。
问题是我在不同的文件中创建了不同的 Gino 实例 class。这是错误的。作为解决方案,您应该只创建 1 个 Gino 实例并在不同文件之间共享它。