提供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.dbMongoClient对象,如果您需要的话。

在视图代码中,您可以执行以下操作:

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文档。 debug1

单击“解释”按钮将显示光标的explain()结果。 debug2 您可以在这里查看详细的连接信息,单击字段名将带您进入该字段的pymongo文档。 debug3 此页显示此请求中使用的所有连接数据库及其集合的dbstatsdebug4 在这里,我们可以看到在一个项目中使用多个数据库。 debug5

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何定制springdata存储库方法名称?   html有没有办法将java应用程序或JApplet嵌入到网站中?   Jackson ObjectMapper将java从字符串序列化为JSON作为namevalue   java刷新JTable?   用Java程序分发用JavaDB制作的数据库   java Android如何启动新活动   当集合大小超过500.000时,java的处理速度会显著降低   在java的分层目录中的多个目录中查找相同的文件   java如何将ArrayList数据插入数据库   java如何修改此代码,使其时间复杂度为o(logn)或o(n),而不是o(n^2)   java面板(SimplePanel)中仅显示图像的前1/3(大约),   jakarta ee Java Bean和企业Java Bean之间的区别?   创建AWS Cloudfront自签名URL(java sdk)时出现amazon web服务错误   基于Jersey和Jackson查询参数的java动态属性过滤