1

我有一个基于烧瓶的应用程序,我正在配置如下:

from flask import Flask
from flask.ext.mongoengine import MongoEngine

app = Flask(__name__)
app.config["MONGODB_DB"] = "my_tumble_log"
app.config["SECRET_KEY"] = "KeepThisS3cr3t"

db = MongoEngine(app)

if __name__ == '__main__':
    app.run()

我有一个 models.py 文件,其中包含我所有的模型,例如:import datetime

from flask import url_for
from tumblelog import db


class Post(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    title = db.StringField(max_length=255, required=True)
    slug = db.StringField(max_length=255, required=True)
    body = db.StringField(required=True)
    comments = db.ListField(db.EmbeddedDocumentField('Comment'))

    def get_absolute_url(self):
        return url_for('post', kwargs={"slug": self.slug})

    def __unicode__(self):
        return self.title

    meta = {
        'allow_inheritance': True,
        'indexes': ['-created_at', 'slug'],
        'ordering': ['-created_at']
    }

我想定义一条新路线,以便我可以在那里使用另一个数据库及其集合:

@app.route('/sampleroute')
def sample_route():
    #Insert Code to use another database of a specific name
    #Query Out a particular "OtherClass" that would be in models.py

我需要做什么才能将“db”设置为等于“db1”之类的其他数据库,而不是“/sampleroute”中的“my_tumble_log”?我可以像 Post 在同一个 models.py 文件中那样在自己的类中声明“OtherClass”吗?还是我想用 MongoEngine 做不到?

4

3 回答 3

2

要使用多个数据库,您可以使用 connect() 并为连接提供别名。

然后,在model.py添加一个元标记来指定数据库:

meta = {"db_alias": "user-db"}

有关更多信息,请参阅文档中的连接到 MongoDB

于 2012-08-21T22:20:13.943 回答
0

只需在 Document 类中使用 {"db_alias": alias_name}

只是为了确保您注册了别名 register_connect(alias_name,db,host,port) 您可以注册任意数量的别名。这是 register_connect 的文档: https ://mongoengine-odm.readthedocs.org/en/latest/apireference.html#mongoengine.register_connection

于 2013-05-07T17:51:58.860 回答
0

我的工作是这样的:1,在我的models.py中:

meta = {'db_alias': 'user-db'}

2,在我的应用程序/ init .py 中:

from flask.ext.mongoengine import MongoEngine
db = MongoEngine()
db.register_connection('user-db', name='user-db')

3,那是工作。

于 2016-01-12T07:27:15.460 回答