Объявите модель перед созданием соединения в 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_)