PyMongo简单使用以及操作mongodb数据库

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;">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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值