Python Web 6 —— Python操作MongoDB数据库

来源:互联网 发布:关于费米估算法的书 编辑:程序博客网 时间:2024/05/19 18:10

前言:

        做网页开发少不了数据存储中心,在Java Web中常用的数据库是MySQL,它是一种关系型的数据库,但我们在这里不选用MySQL,而使用非关系型的数据库MongoDB。


一、安装和启动MongoDB:

1.安装MongoDB:

        下载指定平台的MongoDB安装包,这里我使用的是Mac OS平台,下载地址如下:

         https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.0.0.tgz

        下载指定版本的MongoDB,并解压到本地目录下面,然后在解压后的目录下创建一个data/db目录,并在终端中修改data目录的权限:

sudo chown -R data

        例如我是把解压目录放到桌面的文件目录下面,那么我的设置过程如下:


        所以我的db目录为:~/Desktop/Python/tools/mongodb-osx-x86_64-3.2.7/data/db


2.启动MongoDB:

    启动方法是在终端中输入指令:sudo mongod --dbpath [data目录的地址]

    

    关闭数据库的方法就是在启动的终端界面按键盘:Ctrl+C


3.下载可视化数据库操作工具:

    像这样的工具其实很多,我使用的是网上别人推荐的一个 ————Robomongo,打开软件,首先需要创建一个数据库连接器:


    创建过程非常简单,只需要设置连接的名称和ip端口即可,ip要与数据库启动时提示的ip一致,本地测试的话可以直接使用默认值localhost创建:

    创建完成后点击连接即可连接到当前启动的MongoDB数据库,并查看其中的内容:

    


4.启动mongodb常见错误如下:

错误一:

Failed to unlink socket file /tmp/mongodb-27017.sock errno:1 Operation not permitted
        解决方法:在终端中输入指令:
rm /tmp/mongodb-27017.sock

错误二:

exception in initAndListen: 29 Data directory /data/db not found., terminating

        解决方案指定当前db存放的目录:

mongod --dbpath ~/Desktop/Python/tools/mongodb-osx-x86_64-3.2.7/data/db

二、使用python操作MongoDB:

1.安装pymongo:

        python不能直接操作MongoDB,而是通过pymongo插件来实现对数据库的操作的,所以第一步要做的就是安装pymongo插件,安装过程其实非常简单,直接在终端中输入一下指令:

pip install pymongo


2.python中使用pymongo:

#encoding:utf-8from pymongo import MongoClientcon = MongoClient('localhost', 27017) #连接到数据库db = con.local                                        #获取数据库collect = db.test                                     #获取数据库中的一个Collectionabc={'name':'lzy'}      #创建一个key-value格式的数据collect.insert(abc)     #将上面创建的数据存入数据库

        con为创建一个连接,db为所连接数据库,也可写为:db=con['local'],collect为所连接的聚集,也可写为:collect=db['test']。

        上述代码完成了将一个key为name,value为lzy的的数据插入到local数据库集合)中的test文档(聚集)中,可以在Robomongo中查看插入后的结果:

        

        那么,数据库的几个基本操作:增、删、改和查在python中通过pymongo的实现代码分别如下:

增:abc={'name':'lzy'}      #创建一个key-value格式的数据

       或者一次插入多个key-value:abc={'name':'lsh','age':2}
       collect.insert(abc)

删:abc={'name':'lzy'}
       collect.remove(abc)  #删除指定一条数据

       collect.remove()        #删除此文档的全部数据

改:p = {'name':'lzy'}
       a={'name':'ash'}

       collect.update( p,{"$set":a}) #将原来数据库的数据p替换为新的数据a

查:

        a.查询当前集合(假设以local为例)中所有文档的名称:db.collection_names()

        b.查询当前文档的名称:collect.name

        c.查询聚集的一条记录:collect.find_one()或者collect.find_one({'name':'lsh'}),假如不存在则返回None

        d.查询聚集的字段:collect.find_one({},{'name':1,'age':1})

        e.遍历聚集:

           for item in collect.find():

                item

          或者是:

          for item in collect.find():

                item['name'] #获取此key对应的value

        f.查询结果统计:collect.find().count()或者collect.find_one({'name':'lsh'}).count()

        g.查询结果排序:

           collect.find().sort('age')                                          #默认排序

           collect.find().sort('age',pymongo.ASCENDING)    #升序

           collect.find().sort('age',pymongo.DESCENDING)  #降序

          此外,查询结果还可以多列排序:

          collect.find().sort('age',pymongo.ASCENDING,'age',pymongo.DESCENDING)

1 0