本文实例讲述了Python操作mongodb数据库的方法。分享给大家供大家参考,具体如下:
安装pymongo
下载pymongo:
安装pymongo:
解压后,cmd进入pymongo安装包信息目录,输入:python setup.py install
即可
在idle中可以成功导进该木块说明ok了。
1
2
|
>> import pymongo
>>
|
python操作mongodb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#导入pymongo木块
>>> import pymongo as p
#连接mongodb
>>> client = p.MongoClient( 'localhost' , 27017 )
#查看mongodb有多少数据库
>>> client.database_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' : ObjectId( '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 })
ObjectId( '5840fa9bbbd6900a787ac386' )
#查看插入是否成功查询
>>> for i in db1.col.find():
print (i)
{ 'name' : 'python接口测试' , 'age' : '15' , '_id' : ObjectId( '5840fa9bbbd6900a787ac386' ), 'date' : 'today' , 'like' : 100 }
#插入多个文档
>>> documents = [{ "name" : "liy" , "age" : "10" },{ "name" : "haha" , "age" : "30" },{ "name" : "huhu" , "age" : "20" }]
>>> db1.col.insert(documents)
[ObjectId( '5840fb6bbbd6900a787ac387' ), ObjectId( '5840fb6bbbd6900a787ac388' ), ObjectId( '5840fb6bbbd6900a787ac389' )]
#查看插入的查询
>>> for i in db1.col.find().limit( 3 ).skip( 1 ):
print (i)
{ 'age' : '10' , '_id' : ObjectId( '5840fb6bbbd6900a787ac387' ), 'name' : 'liy' }
{ 'age' : '30' , '_id' : ObjectId( '5840fb6bbbd6900a787ac388' ), 'name' : 'haha' }
{ 'age' : '20' , '_id' : ObjectId( '5840fb6bbbd6900a787ac389' ), 'name' : 'huhu' }
#查看数据按and连接条件查询
>>> for i in db1.col.find({ "name" : "liy" , "age" : "10" }):
print (i)
{ 'age' : '10' , '_id' : ObjectId( '5840fb6bbbd6900a787ac387' ), 'name' : 'liy' }
#查看数据以age字段倒序查询
>>> for i in db1.col.find().sort([( "age" , - 1 )]):
print (i)
{ 'age' : '30' , '_id' : ObjectId( '5840fb6bbbd6900a787ac388' ), 'name' : 'haha' }
{ 'age' : '20' , '_id' : ObjectId( '5840fb6bbbd6900a787ac389' ), 'name' : 'huhu' }
{ 'age' : '10' , '_id' : ObjectId( '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' : ObjectId( '5840fb6bbbd6900a787ac389' ), 'name' : 'dongdong' }
#按条件删除某条数据
>>> db1.col.remove ({ "name" : "dongdong" })
{ 'ok' : 1 , 'n' : 1 }
>>> db1.col.find({ "name" : "dongdong" })
<pymongo.cursor.Cursor object at 0x00000000045B6828 >
>>> for i in db1.col.find({ "name" : "dongdong" }):
print (i)
|
应用于接口测试中:
接口自动化测试中如果要防止脏数据的影响,需要清除已有的数据再进行接口测试。最后一次接口测试用例插入的数据没有清除的,保留在mongo中的,这刚好为下一个接口提供数据关联。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
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程序设计有所帮助。
原文链接:https://blog.csdn.net/JOJOY_tester/article/details/53424667