三、mongodb数据库系列——mongodb和python交互 总结
生活随笔
收集整理的這篇文章主要介紹了
三、mongodb数据库系列——mongodb和python交互 总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、mongodb和python交互
學習目標
1. mongdb和python交互的模塊
pymongo 提供了mongdb和python交互的所有方法
安裝方式: pip install pymongo
2. 使用pymongo
2.1 導入pymongo并選擇要操作的集合
數據庫和集合能夠自動創建
2.1.1 無需權限認證的方式創建連接對象以及集合操作對象
from pymongo import MongoClientclient = MongoClient(host,port) # 如果是本地連接host,port參數可以省略collection = client[db名][集合名] # collection = client.db名.集合名 # 與上邊用法相同2.1.2 需要權限認證的方式創建連接對象以及集合操作對象
from pymongo import MongoClient from urllib.parse import quote_plususer = 'python' # 賬號 password = 'python' # 密碼 host = '127.0.0.1' # host port = 27017 # port uri = "mongodb://%s:%s@%s" % (quote_plus(user),quote_plus(password),host) # quote_plus函數:對url進行編碼 # uri = mongodb://python:python@127.0.0.1 client = MongoClient(uri, port=port) collection = client.db名.集合名2.2 insert()添加數據
insert可以批量的插入數據列表,也可以插入一條數據
collection.insert({一條數據}) collection.insert([{數據一},{數據二}])2.2.1 添加一條數據
返回插入數據的_id
ret = collection.insert({"name":"test10010","age":33}) print(ret)2.2.2 添加多條數據
返回ObjectId對象構成的列表
item_list = [{"name":"test1000{}".format(i)} for i in range(10)] rets = collection.insert(item_list) print(rets) for ret in rets:print(ret)2.3 find_one()查找一條數據
接收一個字典形式的條件,返回字典形式的整條數據
如果條件為空,則返回第一條
2.4 find()查找全部數據
返回所有滿足條件的結果,如果條件為空,則返回全部
結果是一個Cursor游標對象,是一個可迭代對象,可以類似讀文件的指針,但是只能夠進行一次讀取
2.5 update()更新數據(全文檔覆蓋或指定鍵值,更新一條或多條)
- 語法:collection.update({條件}, {’$set’:{指定的kv或完整的一條數據}}, multi=False/True, upsert=False/True)
- multi參數:默認為False,表示更新一條; multi=True則更新多條; multi參數必須和$set一起使用
- upsert參數:默認為False; upsert=True則先查詢是否存在,存在則更新;不存在就插入
- $set表示指定字段進行更新
2.5.1 更新一條數據;全文檔覆蓋;存在就更新,不存在就插入
data = {'msg':'這是一條完整的數據1','name':'哈哈'} client.test.test.update({'haha': 'heihei'}, {'$set':data}, upsert=True)2.5.2 更新多條數據;全文檔覆蓋;存在就更新,不存在就插入
data = {'msg':'這是一條完整的數據2','name':'哈哈'} # 該完整數據是先查詢后獲取的 client.test.test.update({}, {'$set':data}, multi=True, upsert=True)2.5.3 更新一條數據;指定鍵值;存在就更新,不存在就插入
data = {'msg':'指定只更新msg___1'} client.test.test.update({}, {'$set':data}, upsert=True)2.5.4 更新多條數據;指定鍵值;存在就更新,不存在就插入
data = {'msg':'指定只更新msg___2'} client.test.test.update({}, {'$set':data}, multi=True, upsert=True)2.6 delete_one()刪除一條數據
collection.delete_one({"name":"test10010"})2.7 delete_many()刪除全部數據
collection.delete_many({"name":"test10010"})代碼演示:
from pymongo import MongoClient# 創建數據庫鏈接對象 client = MongoClient('localhost',27017)# 選擇一個數據庫 db = client['admin'] db.authenticate('root','root')# 選擇一個集合 col = client['pydata']['test']# 插入數據 # col.insert_one({"class":"python37"}) # col.insert([{"class":"python36"},{"class":"python38"},{"class":"python39"},{"class":"python40"}])# 查詢 # print(col.find()) # for data in col.find(): # print(data) # print("_________________________________") # print(col.find_one())# 更新 # 全文檔覆蓋更新 # col.update({"class":"python37"},{"message":"hello World!"}) # col.update({},{"$set":{"id":"xxxxx-xxx"}}) # col.update({},{"$set":{"id":"xxxxx-xxx"}},multi=True) # col.update({"message":"helloWorld!"},{"$set":{"id":"xxxxx-xxx1"}},upsert=True) # col.update({"message":"hello"},{"$set":{"id":"xxxxx-xxx2"}},upsert=True)# 刪除 # col.delete_one({"message":"hello"}) col.delete_many({"id":"xxxxx-xxx"})for data in col.find():print(data)3. pymongo模塊其他api
查看pymongo官方文檔或源代碼 http://api.mongodb.com/python/current/
小結
二、總結
總結
以上是生活随笔為你收集整理的三、mongodb数据库系列——mongodb和python交互 总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高通的快充协议_高通:后续骁龙旗舰将标配
- 下一篇: 传统Web应用案例(采用服务端渲染)