一、安裝&導入
pip install pymongo
from pymongo import MongoClient
MongoDB 默認沒有用戶名密碼
二、連接數據庫
- 方式一
client = MongoClient(host='localhost', port=27017) # MongoClient類
# MongoClient類 的重要參數
# host=None, 數據庫地址localhost (本機的:127.0.0.1)
# port=None, 端口號 27017
# connect=None,
#
- 方式二 指定端口和地址
client = MongoClient('localhost',27017)
# 直接選擇數據庫和表
db = client['students']['demo']
# 插入多條數據
result = db.insert_many('數據,一個列表嵌套字典')
- 方式三 使用URI (不是URL)
client = MongoClient('mongodb://localhost:27017/')
三、新增數據
db = client[‘test’]
db.students.insert_one(‘數據’)
db 是數據庫, 選擇連接 Mongo 的哪個數據庫(test)
student 是其中的一張表
insert_one 相當於指令添加一條數據
更多參數可以參考mongo源碼的 mongo_client.py
result = db.student.insert_many(‘數據,一個列表裏面嵌套字典’)
四、查詢數據
查詢數據或獲取一條數據
mongo = client['students']['demo']
# 查詢一條數據
res = mongo.get_one()
# 查詢多條數據
res = mongo.get_many()
for i in res:
print(i)
# 查詢指定數據
data = {"title": "python"}
mongo.find(data)
根據id查詢
from bson.objectid import ObjectId
# 根據id查詢 需要導入庫 from bson.objectid import ObjectId
res = mongo.find({"_id": ObjectId(query)}) # 得到一個對象 用for遍歷出來
五、修改數據
update_one
update_many
{multi:true} update
修改單條數據
mongo = .client['students']['demo']
def update():
res = self.mongo.update_one({'title':'標題'},{'$set':{'title':'title-2'}})
# 匹配的數據條數
print(res.matched_count)
# 影響的數據條數。
print(res.modified_count)
res = update()
修改多條數據
mongo = .client['students']['demo']
def update_more():
res = self.mongo.update_many({},{'$set':{'x':1}})
print(res.matched_count)
print(res.modified_count)
res = self.mongo.update({'x':2},{'$set':{'x':3}},True)
res = update_more()
六、刪除數據
刪除一條
def delete_one(self):
res = self.db.students.delete_one({'title':'title-2'})
print(res.deleted_count)
res = mongo.delete_one()
刪除多條
def delete_more(self):
res = self.db.students.delete_many({'x':2})
print(res.deleted_count)
res = mongo.delete_more()
七、完整代碼
# @ Time : 2020/3/28 10:20
# @ Author : Emily
from pymongo import MongoClient
from bson.objectid import ObjectId
"""
增加數據 查詢數據 其他空閒再增添
"""
class MongoDB(object):
def __init__(self):
# 連接MongoDB
self.client = MongoClient(host='127.0.0.1', port=27017)
# 連接 test 數據庫 以及 demo 集合 可以先只指定數據庫
self.db = self.client['test']['demo']
def add_one(self, data): # 一條
result = self.db.insert_one(data) # insert_one
print(result)
def add_many(self, data): # 多條
result = self.db.insert_many(data) # insert_many
print(result)
def get_one(self):
return self.db.find_one()
def get_many(self):
return self.db.find()
def get_data(self, query):
# return self.db.find(query) # ( 方法一)
return self.db.find({"_id": ObjectId(query)}) # id ObjectId
if __name__ == '__main__':
mongo = MongoDB() # 實例化 mongo
data_one = {"title": "Java", "content": "教育"} # 單條數據
# mongo.add_one(data_one) # MongoDB自啓動??
data_mo = [
{"title": "C++", "content": "C++"},
{"title": "PHP", "content": "PHP"}
]
# mongo.add_many(data_mo)
res = mongo.get_one()
# print(res)
result = mongo.get_many()
# for data in result:
# print(data)
# key_find_da = {"title": "C++"}
# res_ke = mongo.get_data(key_find_da) # 得到一個對象( 方法一)
# for i in res_ke:
# print(i)
result_id = mongo.get_data("5e7ec5d5407a21984f7e3fd2")
for data in result_id:
print(data)
print(result_id)