Объявите модель перед созданием соединения в ming

Я хочу, чтобы мои модели delcare были перед установлением соединения с базой данных (по некоторым причинам, например, многопоточность и динамическая загрузка конфигурации базы данных URI).

Документация говорит, что использовать так:

from ming import create_datastore
from ming.odm import ThreadLocalODMSession
from ming import schema
from ming.odm import FieldProperty
from ming.odm.declarative import MappedClass

session = ThreadLocalODMSession(
    bind=create_datastore('odm_welcome')
)

class WikiPage(MappedClass):
    class __mongometa__:
        session = session
        name = 'wiki_page'

    _id = FieldProperty(schema.ObjectId)
    title = FieldProperty(schema.String(required=True))
    text = FieldProperty(schema.String(if_missing=''))

Мы можем видеть, что нужно для описания модели session__mongometa__). Как я могу объявить модель WikiPage без session переменная? И установить это позже?

1 ответ

Решение можно объявить моделью без __mongometa__:

class WikiPage(MappedClass):
    _id = FieldProperty(schema.ObjectId)
    title = FieldProperty(schema.String(required=True))
    text = FieldProperty(schema.String(if_missing=''))

Затем создайте отображение вручную с помощью коллекции:

session = ODMSession(bind=create_datastore(uri))
collection_ = collection('wiki_page', session)
session.mapper(WikiPage, collection_)
Другие вопросы по тегам