2

文档说把它放在某个地方:

from sqlalchemy import event
from colanderalchemy import setup_schema
event.listen(mapper, 'mapper_configured', setup_schema)

这应该在金字塔哪里去?我应该使用 Pyramid 事件而不是 SQLAlchemy 的吗?

当我尝试将它放在 models.py 文件的顶部时,它抱怨mapper不存在;我还应该使用它吗?

4

2 回答 2

1

测试套件显示它的工作方式如下:

from sqlalchemy import event
from colanderalchemy import setup_schema
from sqlalchemy.orm import mapper

event.listen(mapper, 'mapper_configured', setup_schema)

请让我知道这是否为您解决了问题,我可以相应地更新文档。

于 2015-04-06T15:54:23.163 回答
1

您需要使用SQLAlchemy 事件,因为它们告诉 SQLAlchemy 内部发生的事情(它们根本与金字塔事件无关)。

ColanderAlchemy 的文档令人困惑;他们在mapper这里要求的是您的模型类(它不是映射器)。

因此,在您的模型中,您应该执行以下操作:

class MyModelClass(Base):
    ...

event.listen(
    MyModelClass,
    "mapper_configured",
    setup_schema)
于 2015-04-05T06:01:46.757 回答