我正在尝试使用我的 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)
是多余的吗?如果我已经给配置了 mongo 根工厂,这是否有必要?
最佳答案
我不建议这样做。我编写了一个 Pyramid 插件,让事情变得更简单、更清晰。
此处的文档:
http://packages.python.org/pyramid_mongo/
以下内容来 self 目前正在编写的一个项目。
在我的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 的遍历。
关于python - 如果我将 MongoDB 作为我的根工厂,是否还需要使用 Configurator 注册它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11911164/