本文实例讲述了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