Python调用MongoDB的方法

60次阅读
没有评论

共计 2282 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章将为大家详细讲解有关 Python 调用 MongoDB 的方法,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

使用 pymongo 对 MongoDB 进行的各种操作,下载相应平台的版本,解压即可。为方便使用,将 bin 路径添加到系统 path 环境变量里。其中 mongod 是服务器,mongo 是客户 shell,然后创建数据文件目录:在 c 盘下创建 data 文件夹,里面创建 db 文件夹。

Python 怎么调用 MongoDB

安装对应语言的 Driver,Python 安装 pymongo

$easy_installpymongo

使用方法总结,摘自官方教程

创建连接

importpymongo
 connection=pymongo.Connection(localhost ,27017)

切换数据库

db=connection.test_database

获取 collection

collection=db.test_collection

db 和 collection 都是延时创建的,在添加 Document 时才真正创建

文档添加,_id 自动创建

importdatetime
 post={ author : Mike ,
 ... text : Myfirstblogpost! ,
 ... tags :[mongodb , python , pymongo],
 ... date :datetime.datetime.utcnow()}
 posts=db.posts
 posts.insert(post)
 ObjectId(...)

批量插入

new_posts=[{ author : Mike ,
 ... text : Anotherpost! ,
 ... tags :[bulk , insert],
 ... date :datetime.datetime(2009,11,12,11,14)},
 ...{ author : Eliot ,
 ... title : MongoDBisfun ,
 ... text : andprettyeasytoo! ,
 ... date :datetime.datetime(2009,11,10,10,45)}]
 posts.insert(new_posts)
 [ObjectId( ...),ObjectId(...)]

获取所有 collection(相当于 SQL 的 showtables)

db.collection_names()
 [u posts ,u system.indexes]

获取单个文档

posts.find_one()
 {u date :datetime.datetime(...),u text :u Myfirstblogpost! ,u _id :ObjectId(...),u author :u Mike ,u tags :[u mongodb ,u python ,u pymongo]}

查询多个文档

forpostinposts.find():
 ...post
 {u date :datetime.datetime(...),u text :u Myfirstblogpost! ,u _id :ObjectId(...),u author :u Mike ,u tags :[u mongodb ,u python ,u pymongo]}
 {u date :datetime.datetime(2009,11,12,11,14),u text :u Anotherpost! ,u _id :ObjectId(...),u author :u Mike ,u tags :[u bulk ,u insert]}
 {u date :datetime.datetime(2009,11,10,10,45),u text :u andprettyeasytoo! ,u _id :ObjectId(...),u author :u Eliot ,u title :u MongoDBisfun }

加条件的查询

posts.find_one({author : Mike})

高级查询

posts.find({date :{ $lt :d}}).sort(author)

统计数量

posts.count()
 3

加索引

frompymongoimportASCENDING,DESCENDING
 posts.create_index([(date ,DESCENDING),(author ,ASCENDING)])
 u date_-1_author_1

查看查询语句的性能

posts.find({date :{ $lt :d}}).sort(author).explain()[ cursor]
 u BtreeCursordate_-1_author_1 
posts.find({date :{ $lt :d}}).sort(author).explain()[ nscanned]
 2

附自己总结的一点小心得,仅供参考

缺点

不是全盘取代传统数据库 (NoSQLFan:是否能取代需要看应用场景)

不支持复杂事务 (NoSQLFan:MongoDB 只支持对单个文档的原子操作)

文档中的整个树,不易搜索,4MB 限制?(NoSQLFan:1.8 版本已经修改为 16M)

特点 (NoSQLFan:作者在这里列举的很多只是一些表层的特点):

文档型数据库,表结构可以内嵌

没有模式,避免空字段开销 (SchemaFree)

分布式支持

查询支持正则

动态扩展架构

32 位的版本最多只能存储 2.5GB 的数据 (NoSQLFan:最大文件尺寸为 2G,生产环境推荐 64 位)

关于“Python 调用 MongoDB 的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2282字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)