Python操作mongodb資料庫的方法詳解
阿新 • • 發佈:2020-01-09
本文例項講述了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.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','name': 'liy'} #檢視資料以age欄位倒序查詢 >>> for i in db1.col.find().sort([("age",-1)]): print(i) {'age': '30','name': 'huhu'} {'age': '10','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','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中的,這剛好為下一個介面提供資料關聯。
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': '[email protected]','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程式設計有所幫助。