本文实例讲述了Python操作mongodb数据库的方法。分享给大家供大家参考,具体如下:

安装pymongo

下载pymongo:

https://pypi.python.org/packages/82/26/f45f95841de5164c48e2e03aff7f0702e22cef2336238d212d8f93e91ea8/pymongo-3.4.0.tar.gz#md5=aa77f88e51e281c9f328cea701bb6f3e

安装pymongo:

解压后,cmd进入pymongo安装包信息目录,输入:python setup.py  install 即可

\"\"

在idle中可以成功导进该木块说明ok了。

>>import pymongo
>>

python操作mongodb

#导入pymongo木块
>>> import pymongo as p
#连接mongodb
>>> client =p.MongoClient(\'localhost\',27017)
#查看mongodb有多少数据库
>>> client.data _names ()
[\'liyue\', \'local\', \'test\']
#连接具体某个数据库
>>> db1 =client.liyue
>>> db2 =client.test
#查看该数据库下所有集合
>>> db2.collection_names ()
[\'col\', \'test\']
#for循环遍历查看集合中的文档:查看col集合中第2条数据。
>>> for i in db2.col.find().limit(1).skip(1):
    print(i)
{\'interests\': [\'balls\', \'basketball\', 12.0], \'_id\':  Id(\'583bb6dc8fbf0aee1d9c94bf\'), \'name\': \'Tom\', \'sex\': \'girl\'}
#清空集合,删除集合中所有数据
>>> db1.col.remove ({})
{\'ok\': 1, \'n\': 0}
#查看是否清空成功查询
>>> for i in db1.col.find():
    print(i)
#插入一个文档(一条数据)
>>> db1.col.insert ({\'name\':\"python接口测试\",\"date\":\"today\",\"age\":\"15\",\"like\":100})
 Id(\'5840fa9bbbd6900a787ac386\')
#查看插入是否成功查询
>>> for i in db1.col.find():
    print(i)
{\'name\': \'python接口测试\', \'age\': \'15\', \'_id\':  Id(\'5840fa9bbbd6900a787ac386\'), \'date\': \'today\', \'like\': 100}
#插入多个文档
>>> documents =[{\"name\":\"liy\",\"age\":\"10\"},{\"name\":\"haha\",\"age\":\"30\"},{\"name\":\"huhu\",\"age\":\"20\"}]
>>> db1.col.insert(documents)
[ Id(\'5840fb6bbbd6900a787ac387\'),  Id(\'5840fb6bbbd6900a787ac388\'),  Id(\'5840fb6bbbd6900a787ac389\')]
#查看插入的查询
>>> for i in db1.col.find().limit(3).skip(1):
    print(i)
{\'age\': \'10\', \'_id\':  Id(\'5840fb6bbbd6900a787ac387\'), \'name\': \'liy\'}
{\'age\': \'30\', \'_id\':  Id(\'5840fb6bbbd6900a787ac388\'), \'name\': \'haha\'}
{\'age\': \'20\', \'_id\':  Id(\'5840fb6bbbd6900a787ac389\'), \'name\': \'huhu\'}
#查看数据按and连接条件查询
>>> for i in db1.col.find({\"name\":\"liy\",\"age\":\"10\"}):
    print(i)
{\'age\': \'10\', \'_id\':  Id(\'5840fb6bbbd6900a787ac387\'), \'name\': \'liy\'}
#查看数据以age字段倒序查询
>>> for i in db1.col.find().sort([(\"age\",-1)]):
    print(i)
{\'age\': \'30\', \'_id\':  Id(\'5840fb6bbbd6900a787ac388\'), \'name\': \'haha\'}
{\'age\': \'20\', \'_id\':  Id(\'5840fb6bbbd6900a787ac389\'), \'name\': \'huhu\'}
{\'age\': \'10\', \'_id\':  Id(\'5840fb6bbbd6900a787ac387\'), \'name\': \'liy\'}
#更新已有文档数据
>>> db1.col.update ({\"name\":\"huhu\"},{\"$set\":{\"name\":\"dongdong\"}})
{\'updatedExisting\': True, \'ok\': 1, \'nModified\': 1, \'n\': 1}
>>> for i in db1.col.find({\"name\":\"dongdong\"}):
    print(i)
{\'age\': \'20\', \'_id\':  Id(\'5840fb6bbbd6900a787ac389\'), \'name\': \'dongdong\'}
#按条件删除某条数据
>>> db1.col.remove ({\"name\":\"dongdong\"})
{\'ok\': 1, \'n\': 1}
>>> db1.col.find({\"name\":\"dongdong\"})
<pymongo.cursor.Cursor   at 0x00000000045B6828>
>>> for i in db1.col.find({\"name\":\"dongdong\"}):
    print(i)

应用于接口测试中:

接口自动化测试中如果要防止脏数据的影响,需要清除已有的数据再进行接口测试。最后一次接口测试用例插入的数据没有清除的,保留在mongo中的,这刚好为下一个接口提供数据关联。

import json
import requests
import unittest
import pymongo
class MyTest(unittest.TestCase):#封装测试环境的初始化和还原的类
  def setUp(self):
    self.client = pymongo.MongoClient(\'192.168.12.250\',27017)  #连接mongodb
    self.db = client.dsp_online    #获取具体某个数据库
    self.db.Qualification.remove({})  #清空Qualification这个集合所有数据
    print(\"start test\")
  def tearDown(self):
    self.client.colse()        #关闭数据库连接
    print(\"end test\")
    pass
class test_qualification_add(MyTest):#把这个接口封装一个类,下面的方法是具体的测试用例
  \'\'\'接口名称:增加资质\'\'\'
  def test_qualification_add(self):
    \'\'\'测试用例1:\'\'\'
    url = \"http://audit.sf.katcin.com/audit/api/qualification/add\"
    headers ={\"Content-Type\":\"application/json\"}
    data = {
    \"token\":\"abcdefg\",
    \'pid\': \'1\',
    \'param\': {
      \'Name\': \'我的资质1\',
      \'QualificationId\': 50,
      \'Email\': \'1111@163.com\',
      \'SiteName\': \'10001\',
      \'Materials\': [
        {
          \'Url\': \'http://i9b482c85e06a5145410870.jpg\',
          \'TypeId\':1,
        }
      ],
       \'AdxInfo\': [{
          \'AdxId\': 10008,       #渠道Id
          \'Industry\': 8000,      #行业分类
          \'FullIndustry\':[5301], #行业分类集合
          \'BrandName\': \'行业分类:电脑\',   #品牌名称
          \'Memo\': \'渠asd\',
         }
       ]
      }
     }
    r = requests.post(url = url,json = data, headers = headers)
    #return r.json()
    print(r.text)
    #result = r.json()
    print(r.status_code)
    self.assertIn(\"true\",r.text)
if __name__==\"__main__\":
  unittest.main()

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

收藏 打印