快速上手MongoDB和Python交互

一、安裝&導入

pip install pymongo
from pymongo import MongoClient
MongoDB 默認沒有用戶名密碼

二、連接數據庫

  1. 方式一
client = MongoClient(host='localhost', port=27017)  # MongoClient類
# MongoClient類	的重要參數
# host=None,  數據庫地址localhost  (本機的:127.0.0.1)
# port=None,  端口號 27017
# connect=None,
# 
  1. 方式二 指定端口和地址
client = MongoClient('localhost',27017)
# 直接選擇數據庫和表
db = client['students']['demo']
# 插入多條數據
result = db.insert_many('數據,一個列表嵌套字典')
  1. 方式三 使用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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章