pymongopython
sudo pip3 install pymongo
1. 建立數據庫鏈接對象shell
conn = pymonge.MomgoClient("localhost",27017)
2. 生成操做的數據庫對象數據庫
db = conn.stu
3. 生成集合對象ssh
myset = db.class0
4. 經過 集合對象 調用結構完成數據操做socket
['_BaseObject__codec_options', '_BaseObject__read_concern', '_BaseObject__read_preference', '_BaseObject__write_concern', '_Collection__create', '_Collection__create_index', '_Collection__database', '_Collection__find_and_modify', '_Collection__full_name', '_Collection__name', '_Collection__write_response_codec_options', '__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_command', '_count', '_delete', '_insert', '_insert_one', '_legacy_write', '_socket_for_primary_reads', '_socket_for_reads', '_socket_for_writes', '_update', 'aggregate', 'bulk_write', 'codec_options', 'count', 'create_index', 'create_indexes', 'database', 'delete_many', 'delete_one', 'distinct', 'drop', 'drop_index', 'drop_indexes', 'ensure_index', 'find', 'find_and_modify', 'find_one', 'find_one_and_delete', 'find_one_and_replace', 'find_one_and_update', 'full_name', 'group', 'index_information', 'initialize_ordered_bulk_op', 'initialize_unordered_bulk_op', 'inline_map_reduce', 'insert', 'insert_many', 'insert_one', 'list_indexes', 'map_reduce', 'name', 'next', 'options', 'parallel_scan', 'read_concern', 'read_preference', 'reindex', 'remove', 'rename', 'replace_one', 'save', 'update', 'update_many', 'update_one', 'with_options', 'write_concern']
5. 關閉數據庫鏈接ide
db.close()
insert_many 插入多條
insert_one 插入一條
insert 插入一條或多條
save 保存文檔
實例函數
myset.insert_one({"name":"張鐵林","King":"乾隆"})
myset.insert_many([{"name":"張國立","King":"康熙"}, {"name":"陳道明","King":"康熙"}])
myset.insert({"name":"唐國強","King":"雍正"}) myset.insert([{"name":"陳建斌","King":"雍正"}, {"_id":1, "name":"吳奇隆","King":"四爺"}])
myset.save({"_id":1,"name":"聶遠","King":"乾隆"})
find 查找全部
find_one 查找首個
find(query,field)
參數形式 同 mongoshell 中的 findspa
返回值 遊標對象code
對比 mongoDB 的語句orm
全部的操做符加上引號,做爲字符串形式
true/false/null 改爲 True/False/None
實例
cursor = myset.find({"name":{"$exists":True}},{"_id":0}) for i in cursor: # print(i) print(i["name"],"--",i["King"])
cursor 本質爲返回的文檔集合的序列, 同 mongoDB 同樣能夠繼續調用其餘的精確篩選方法
next() 獲取下一個文檔 limit() 獲取前幾條文檔 skip() 跳過幾條 count() 計數 sort() 排序
* sort 的參數發生了變化 sort([(域名,1/-1),(),()...]) * limit,sort,skip 使用時, 必須保證遊標在最開始的位置
# for i in cursor.limit(3): # for i in cursor.skip(3): # for i in cursor.sort([("name",1),("age",-1)]): for i in cursor.sort([("name",1)]): print(i)
find_one(query,field)
功能 查找首個符合條件的文檔
參數 同 find
返回值 返回字典(只查到首條, 所以返回數據也是單數據, 即 字典)
實例
dic = {"$or":[{"King":"乾隆"},{"name":"陳道明"}]} d = myset.find_one(dic,{"_id":0}) print(d)
update_one 修改一個
update_many 修改多個
update 修改一個或多個
myset.update_many({"King":"康熙"},{"$set":{"king_name":"玄燁"}}) myset.update_one({"King":"雍正"},{"$set":{"king_name":"忘了名字"}}) myset.update_one({"name":"鄭少秋"},{"$set":{"King":"乾隆"}},upsert=True) myset.update({"King":"乾隆"},{"$set":{"king_name":"弘曆"}}) myset.update({"King":"乾隆"},{"$set":{"king_name":"弘曆"}},multi=True)
delete_one 刪除一個
delete_many 刪除多個
remove 刪除一個或多個
myset.delete_one({"King":"康熙"}) myset.delete_many({"King":"雍正"}) myset.remove({"king_name":{"$exists":False}}) myset.remove({"king_name":None},multi=True)
find_one_and_update
find_one_and_delete
data = myset.find_one_and_delete({"name":"張鐵林"}) print(data)
from pymongo import MongoClient # 建立數據庫連接 conn = MongoClient("localhost",27017) # 建立數據庫對象 db = conn.stu # db = conn["stu"] # 生成集合對象 myset = db.class0 # myset = db["class0"] # 建立集合對象 myset = db.class4 # 數據操做 # -----------------------insert---------------------- # myset.insert_one({"name":"張鐵林","King":"乾隆"}) # myset.insert_many([{"name":"張國立","King":"康熙"},\ # {"name":"陳道明","King":"康熙"}]) # myset.insert({"name":"唐國強","King":"雍正"}) # myset.insert([{"name":"陳建斌","King":"雍正"},\ # {"_id":1, "name":"吳奇隆","King":"四爺"}]) # myset.save({"_id":1,"name":"聶遠","King":"乾隆"}) # ----------------------find----------------------- # cursor = myset.find({"name":{"$exists":True}},{"_id":0}) # print(cursor.next()) # 打印下一個文檔 # for i in cursor: # print(i) # print(i["name"],"--",i["King"]) # 全部的操做符加上引號,做爲字符串形式 # true/false/null 改爲 True/False/None # for i in cursor.limit(3): # for i in cursor.skip(3): # for i in cursor.sort([("name",1),("age",-1)]): # for i in cursor.sort([("name",1)]): # print(i) # limit,sort,skip 使用時, 必須保證遊標在最開始的位置 # dic = {"$or":[{"King":"乾隆"},{"name":"陳道明"}]} # d = myset.find_one(dic,{"_id":0}) # print(d) # ----------------------update----------------------- # myset.update_many({"King":"康熙"},{"$set":{"king_name":"玄燁"}}) # myset.update_one({"King":"雍正"},{"$set":{"king_name":"忘了名字"}}) # myset.update_one({"name":"鄭少秋"},{"$set":{"King":"乾隆"}},upsert=True) # myset.update({"King":"乾隆"},{"$set":{"king_name":"弘曆"}}) # myset.update({"King":"乾隆"},{"$set":{"king_name":"弘曆"}},multi=True) # ------------------------delete---------------------- # myset.delete_one({"King":"康熙"}) # myset.delete_many({"King":"雍正"}) # myset.remove({"king_name":{"$exists":False}}) # myset.remove({"king_name":None},multi=True) # ------------------------複合操做---------------------- # data = myset.find_one_and_delete({"name":"張鐵林"}) # print(data) # 關閉連接 conn.close()
create_index 建立索引 參數: 二元元組構成列表 create_index([("age",1)]) create_index([("age",1),("name":-1)]) 也能夠直接寫 域名 ("age") 表示對該域建立正向索引 返回值: 索引名稱 list_indexes 查看索引 drop_index 刪除索引 drop_indexes 刪除全部索引
aggregate()
功能 完成聚合操做
參數 聚合管道, 同mongoshell 中的聚合
返回值 數據操做結果遊標對象
實例
lis = [ {"$group": {"_id": "$sex", "num": {"$sum": 1}}}, ] cursor = myset.aggregate(lis)
from pymongo import MongoClient conn = MongoClient("localhost", 27017) db = conn.stu myset = db.class0 # -------------------------------索引-------------------------------- # 建立 # index_name = myset.create_index("name") # index_age = myset.create_index("age",name="Age",sparse=True) # index_age = myset.create_index("age",name="Age",sparse=True,unique=True) # 刪除索引 # myset.drop_index("Age") # myset.drop_indexes() # 查看 # for i in myset.list_indexes(): # print(i) # ------------------------------聚合---------------------------------- lis = [ {"$group": {"_id": "$sex", "num": {"$sum": 1}}}, ] cursor = myset.aggregate(lis) for i in cursor: print(i) conn.close()
1. 導入bson 二進制模塊,鏈接數據庫
import bson.binary
2. 選擇要存儲的文件, 使用 rb 方式讀取內容
3. 將讀取的內容轉換爲 bson 格式
content = bson.binary.Binary(data)
功能 將 bytes 字串 轉換爲 bson 格式
參數 bytes 字串
返回值 轉換後的數據
4. 將內容插入到數據庫
from pymongo import MongoClient import bson.binary conn = MongoClient("localhost",27017) db = conn.image myset = db.mm # --------------------存儲---------------------------------- # 讀取圖片內容 # with open("123.PNG","rb") as f: # data = f.read() # 格式轉化 # conntent = bson.binary.Binary(data) # 插入數據庫 # myset.insert_one({"filename":"123.jpg","data":conntent}) #--------------------取出文件------------------------------- # img = myset.find_one({"filename":"123.jpg"}) # 寫入本地 # with open("123.jpg","wb") as f: # find_one 會自動轉換不須要本身再轉換了 # f.write(img["data"]) conn.close()