Где поставить автоматическую setup_schema для ColanderAlchemy+Pyramid

Документы говорят, чтобы положить это где-то:

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

Куда это должно пойти в пирамиде? Должен ли я использовать события Pyramid вместо SQLAlchemy?

Когда я попытался поместить его в начало файла models.py, он пожаловался на mapper не существует; я должен все еще использовать это?

2 ответа

Решение

Вам нужно использовать события SQLAlchemy, поскольку они сообщают о том, что происходит внутри SQLAlchemy (они вообще не связаны с событиями пирамиды).

Документация к ColanderAlchemy сбивает с толку; что они называют для mapper Вот ваш класс модели (это не картограф).

Таким образом, в ваших моделях вы должны делать что-то вроде:

class MyModelClass(Base):
    ...

event.listen(
    MyModelClass,
    "mapper_configured",
    setup_schema)

Набор тестов показывает, что он работает так:

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

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

Пожалуйста, дайте мне знать, если это исправит это для вас, и я могу соответствующим образом обновить документацию.

Другие вопросы по тегам