Python3中PyMongo使用举例
MongoDB是一個基于分布式文件存儲的開源數據庫,由C++語言編寫,與平臺無關,旨在為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫中功能最豐富,最像關系數據庫的。它支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
在Python中操作MongoDB可以使用PyMongo,在ubuntu上安裝PyMongo,執行:$ python3 -m pip install pymongo ,結果如下圖所示:
在ubuntu上安裝MongoDB,執行:$ sudo apt-get install mongodb ,這樣在14.04上默認安裝的是2.4.9版本,安裝完后默認啟動服務,但是之前我們安裝pymongo時是3.7.2版本,這樣導致pymongo與mongo不匹配,即出現” pymongo.errors.ConfigurationError: Server at localhost:27017 reports wire version 0, but this version of PyMongo requires at least 2 (MongoDB 2.6).”的錯誤,解決方法可以是降低pymongo的版本,或者升級mongo的版本。在ubuntu安裝高版本的mongodb可以參考:https://docs.mongodb.com/v2.6/tutorial/install-mongodb-on-ubuntu/ ,這里為了簡便,降低pymongo的版本,從3.7.2降低到3.4.0,執行命令:conda install pymongo=3.4.0 。
測試代碼如下:
import pymongo'''
reference:https://juejin.im/post/5addbd0e518825671f2f62eehttp://www.runoob.com/python3/python-mongodb.htmlhttps://blog.csdn.net/xsdxs/article/details/52565489
'''def print_results(description, results):strs = description + " type:"print(strs, type(results))description += ":"if (isinstance(results, dict)):print(description, results)else: for result in results:print(description, result)if __name__ == "__main__":print("pymongo version:", pymongo.version)client = pymongo.MongoClient(host='localhost', port=27017) # mongodb默認端口是27017print("connection successed:", client.server_info()) # 判斷是否連接成功db = client.test # 指定test數據庫, 如果沒有則會自動創建collection = db.students # 每個數據庫又包含許多集合student1 = {'id': '20170101', 'name': 'Jordan', 'age': 20, 'gender': 'male'}result = collection.insert_one(student1) # 在students集合中插入一條學生數據print("insert result:", result)student2 = {'id': '20170102', 'name': 'Tom', 'age': 21, 'gender': 'male'}student3 = {'id': '20170203', 'name': 'Mike', 'age': 22, 'gender': 'male'}result = collection.insert_many([student2, student3]) # 在students集合中插入多條學生數據print("many insert result:", result)result = collection.find_one({"name": "Tom"}) # 查詢單個結果print_results("find one result", result)results = collection.find({"age": 20}) # 查詢多個結果print_results("find many results", results)results = collection.find({"age": {"$gt": 20}}) # 查詢年齡大于20的多個結果print_results("find age > 20 many results", results)count = collection.find({"age": 20}).count() # 查詢計數print("find result count:", count)result = collection.delete_one({"age": 21}) # 刪除一條數據print("delete one result:", result)print("delete one result count:", result.deleted_count)results = collection.delete_many({"age": {"$gte": 21}})print("delete many results:", results)print("delete many results count", results.deleted_count)condition = {"name": "Jordan"}student = collection.find_one(condition)#print_results("find one result", student)student["age"] = 25result = collection.update(condition, student) # 更新一條數據print("update result:", result)print("db collection names:", db.collection_names()) # 查看test數據庫下所有表名稱dblist = client.database_names() # 獲取mongodb下所有數據庫print("db list names:", dblist)
執行結果如下:
GitHub:https://github.com/fengbingchun/Python_Test
總結
以上是生活随笔為你收集整理的Python3中PyMongo使用举例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu定时任务crontab命令介
- 下一篇: 深度学习中的Dropout简介及实现