python - 如果我将 MongoDB 作为我的根工厂,是否还需要使用 Configurator 注册它?

标签 python mongodb pyramid

我正在尝试使用我的 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/

相关文章:

javascript - 有趣的问题;本地存储和 MongoDB

python - 在 Pyramid 框架中实现 Sqlalchemy 烧杯缓存

python |列表理解|多重标准

python - Socket.io 与 flask-socketio python。如何设置套接字保活/超时

python - 通过 python 的多处理模块在 Pool 工作线程中使用本地内存

python - 将平面投影到新坐标系上

java - FindIterable<Document> 如何在查询结果中获取总记录

javascript - 双击以编辑 Meteor 应用程序中的元素

python - SQLAlchemy - 获取表列表

python - 如何识别哪个包出现 AttributeError : 'module' is referring to?