提供MongoDB连接的改进包。与金字塔或金字塔不兼容
pyramid_mongodb2的Python项目详细描述
金字塔MongoDB
一个将MongoDB集成到金字塔应用程序中的简单库。带有调试工具栏。
功能
- 支持多个数据库
- 仅配置设置
- 集成的DebugToolbar具有:
- 显示数据库响应时间
explain()
用于光标结果- 连接信息
- 数据库和集合统计信息
- 避免对每个请求重新创建和关闭
MongoClient
。
设置
pip install pyramid_mongodb2
将以下内容添加到应用程序的ini文件中(如果要调试,请在debugtoolbar.includes
中包含pyramid_mongodb2:MongoToolbar
):
[app:main]mongo_uri=mongodb://username:password@mongodb.host.com:27017/authdbmongo_dbs= foo bar baz-quux foo-test = foopyramid.includes= pyramid_mako pyramid_debugtoolbar pyramid_mongodb2debugtoolbar.includes= pyramid_mongodb2:MongoToolbar
代码将使用config.add_request_method()
向您的请求添加一个Database
对象,根据配置中的定义,db_database_name
可以访问每个数据库。
note:带有连字符的数据库名称将转换为下划线,即数据库baz-quux
将由request.db_baz_quux
访问。
在执行foo-test = foo
时,名为foo-test
的MongoDB数据库将分配给request.db_foo
。
这有助于在测试时使用单独的数据库进行开发、测试和生产,而不必
更改您的应用程序代码,或者如果您只是想给数据库名起别名。
在您可以访问request
的代码中,现在有以下变量:
request.dbrequest.db_foorequest.db_barrequest.db_baz_quuxrequest.db_foo
request.db
是MongoClient
对象,如果您需要的话。
在视图代码中,您可以执行以下操作:
frompyramid.viewimportview_config@view_config(route_name='home',renderer="templates/landing.mako")defmy_view(request):return{'some_data':request.db_foo.some_collection.find({'a':{'$gte':5}},{'_id':False}),'other_data':request.db_bar.visitors.insert_one({'person':request.remote_addr}),}
调试
启用调试后,所有查询都将登录到request.query_log
,当debugtoolbar打开时,您可以
然后查看游标结果的执行时间和explain()
。您还可以看到
数据库和集合。
屏幕截图
下面是工具栏的实际效果:
单击数据库或集合名称将转到“集合”选项卡的相关部分。单击操作名称将转到其pymongo文档。
单击“解释”按钮将显示光标的explain()
结果。
您可以在这里查看详细的连接信息,单击字段名将带您进入该字段的pymongo文档。
此页显示此请求中使用的所有连接数据库及其集合的dbstats
。
在这里,我们可以看到在一个项目中使用多个数据库。