1

我正在尝试使用我的 MongoDB 作为根工厂来设置 Pyramid 的授权/身份验证功能。我想知道是否包括这些行(配置是配置器)

db_url = urlparse(eval(settings['mongo_uri']))
conn = pymongo.Connection(host=db_url.hostname,
                          port=db_url.port)
config.registry.settings['db_conn'] = conn
config.add_subscriber(add_mongo_db, NewRequest)

是多余的吗?如果我已经给 config 一个 mongo root 工厂,这有必要吗?

4

1 回答 1

1

我不建议这样做。我写了一个金字塔插件来让事情变得更容易和更干净。

此处的文档:

http://packages.python.org/pyramid_mongo/

以下是我目前正在写的一个项目。

在我的 ini 文件中(虽然它可能是用 python 设置编写的)

mongo.uri = mongodb://localhost/
mongo.db = wife

在我的配置器中:

config.include('pyramid_mongo')

在我的 root_factory 中:

from pyramid_mongo import get_db

...
...

def root_factory(request):
    db = get_db(request)
    return Root(db)

get_db可以从任何地方调用,您必须将请求作为第一个参数传递。您可以传递其他参数来查询不同的数据库。

在这种情况下不需要订阅者。

顺便说一句,不要担心它是否写在文档中可能有风险,当前版本的包具有 100% 的覆盖率并通过所有测试。将来,这个包可能会集成一些工具,以简化与 mongodb 的遍历。

于 2012-08-11T19:57:20.850 回答