PyMongo简单使用以及操作mongodb数据库
2016-09-17 21:58
441 查看
PyMongo简单使用
<code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#!/usr/bin/env python</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># -*- coding: utf-8 -*-</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> pymongo <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> datetime <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">get_db</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">()</span>:</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 建立连接</span> client = pymongo.MongoClient(host=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"10.244.25.180"</span>, port=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">27017</span>) db = client[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'example'</span>] <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#或者 db = client.example</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> db <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">get_collection</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(db)</span>:</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 选择集合(mongo中collection和database都是延时创建的)</span> coll = db[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'informations'</span>] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> db.collection_names() <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> coll <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">insert_one_doc</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(db)</span>:</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 插入一个document</span> coll = db[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'informations'</span>] information = {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"quyang"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"age"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"25"</span>} information_id = coll.insert(information) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> information_id <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">insert_multi_docs</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(db)</span>:</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 批量插入documents,插入一个数组</span> coll = db[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'informations'</span>] information = [{<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"xiaoming"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"age"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"25"</span>}, {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"xiaoqiang"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"age"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"24"</span>}] information_id = coll.insert(information) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> information_id <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">get_one_doc</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(db)</span>:</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 有就返回一个,没有就返回None</span> coll = db[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'informations'</span>] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> coll.find_one() <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 返回第一条记录</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> coll.find_one({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"quyang"</span>}) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> coll.find_one({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"none"</span>}) <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box; 4000 ">get_one_by_id</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(db)</span>:</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 通过objectid来查找一个doc</span> coll = db[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'informations'</span>] obj = coll.find_one() obj_id = obj[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>] <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id 为ObjectId类型,obj_id:"</span> + str(obj_id) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> coll.find_one({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>: obj_id}) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 需要注意这里的obj_id是一个对象,不是一个str,使用str类型作为_id的值无法找到记录</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id 为str类型 "</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> coll.find_one({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>: str(obj_id)}) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 可以通过ObjectId方法把str转成ObjectId类型</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">from</span> bson.objectid <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> ObjectId <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id 转换成ObjectId类型"</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> coll.find_one({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"_id"</span>: ObjectId(str(obj_id))}) <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">get_many_docs</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(db)</span>:</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># mongo中提供了过滤查找的方法,可以通过各种条件筛选来获取数据集,还可以对数据进行计数,排序等处理</span> coll = db[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'informations'</span>] <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#ASCENDING = 1 升序;DESCENDING = -1降序;default is ASCENDING</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> item <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> coll.find().sort(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"age"</span>, pymongo.DESCENDING): <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> item count = coll.count() <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"集合中所有数据 %s个"</span> % int(count) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#条件查询</span> count = coll.find({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"name"</span>:<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"quyang"</span>}).count() <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"quyang: %s"</span>%count <span class="hljs-function" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">def</span> <span class="hljs-title" style="box-sizing: border-box;">clear_all_datas</span><span class="hljs-params" style="color: rgb(102, 0, 102); box-sizing: border-box;">(db)</span>:</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#清空一个集合中的所有数据</span> db[<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"informations"</span>].remove() <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span> __name__ == <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'__main__'</span>: db = get_db() my_collection = get_collection(db) post = {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"author"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Mike"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"text"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"My first blog post!"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"tags"</span>: [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"mongodb"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"python"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pymongo"</span>], <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"date"</span>: datetime.datetime.utcnow()} <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 插入记录</span> my_collection.insert(post) insert_one_doc(db) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 条件查询</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> my_collection.find_one({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"x"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"10"</span>}) <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># 查询表中所有的数据</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> iii <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> my_collection.find(): <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> iii <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> my_collection.count() my_collection.update({<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"author"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Mike"</span>}, {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"author"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"quyang"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"text"</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"My first blog post!"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"tags"</span>: [<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"mongodb"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"python"</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"pymongo"</span>], <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"date"</span>: datetime.datetime.utcnow()}) <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> jjj <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> my_collection.find(): <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> jjj get_one_doc(db) get_one_by_id(db) get_many_docs(db) </code><p><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># clear_all_datas(db)</span></code><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> </code><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"></code><h1 style="margin: 0px; padding: 20px; font-family: 'Microsoft Yahei', Arial; font-weight: bolder; font-size: 20px; text-align: center; color: rgb(51, 51, 51);">使用pymongo连接数据库mongodb并操作mongodb数据库</h1><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> from pymongo import MongoClient conn = MongoClient('localhost', 27017) #或者 conn = MongoClient('mongodb://localhost:27017/') db = conn.testdb #连接数据库 查找一条数据 print(db.col.find_one())</code><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> 遍历输出所有数据 for item in db.col.find(): print(item)</code><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> 添加数据 db.col.insert({"AccountID":21,"UserName":"libing"})</code><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> 修改记录 db.col.update({"UserName":"libing"},{"$set":{"Email":"libing@126.com","Password":"123"}})</code><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> 删除记录 #-- 全部删除 db.col.remove() #删除指定记录 db.col.remove({"UserName":"keyword"})</code><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> 查询记录数 db.col.find().count()</code><code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"> 对查询结果进行排序 db.col.find().sort("UserName") #--默认为升序 db.col.find().sort("UserName",pymongo.ASCENDING) #--升序 db.col.find().sort("UserName",pymongo.DESCENDING) #--降序 </code></p>
相关文章推荐
- day06 tar命令使用,vim简单操作以及linux开机过程
- 简单的三层框架以及使用dbutils进行数据库操作(入门)
- php使用mongoclient简单操作mongodb数据库
- CoreData的简单使用<一、CoreData数据库表的建立以及增删改查操作>
- Hibernate中使用Session操作数据以及部分简单HQL(hibernate query language)
- 简单的三层框架以及使用dbutils进行数据库操作(入门)
- activiti的使用以及简单的操作
- 简单的三层框架以及使用dbutils进行数据库操作(入门)
- 简单的三层框架以及使用dbutils进行数据库操作(入门)
- 通过shell脚本批量部署ssh私钥认证以及批量操作工具pssh的简单使用
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- MongoDB数据库介绍以及MongoVUE的简单使用
- Qt编程11:QTextStream文件输入输出以及字符串操作的简单使用
- MongoDB数据库安装与使用以及常见操作
- javascript操作cookies 以及 正确使用cookies的属性
- 简单介绍vss工具command操作使用
- 使用System.DirectoryServices.Protocols实现对AD的简单操作[转载]
- javascript操作cookies 以及 正确使用cookies的属性
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数
- 使用jxl读写excel(jxl操作excel)的简单例子