您的位置:首页 > 数据库 > Mongodb

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python mongodb
相关文章推荐