【问题标题】:Declare model before create connection in ming在 ming 中创建连接之前声明模型
【发布时间】:2017-06-08 00:29:46
【问题描述】:

我想在与数据库建立连接之前删除我的模型(出于某种原因,例如多线程和数据库配置 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__)。如何在没有 session 变量的情况下声明 WikiPage 模型?稍后再设置?

【问题讨论】:

    标签: python mongodb ming


    【解决方案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_)
    

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多