1. 程式人生 > >MongoDB—安裝與配置

MongoDB—安裝與配置

在學習爬蟲時,遇到需要儲存資料的情況,雖然可以直接儲存到本地,但是遇到大量資料,就比較麻煩,所以我學習了MongoDB的使用,MongoDB是一種非關係型資料庫,資料以鍵值存貯,類似於JSON格式。

 

1.下載相關連結

下載對應版本的安裝包進行傻瓜式安裝

注意:安裝目錄不得有空格 

2.配置

將目錄放入環境變數

 

在安裝目錄下的data目錄中建立db資料夾

3.使用 

在cmd中輸入 mongod  --dbpath db檔案位置

然後新開一個cmd執行 mongo

即可執行

配置自動

在mongoDB目錄下新建config檔案 

進行設定

##資料檔案

dbpath=D:\mongonDB\data

##日誌檔案

logpath=D:\mongonDB\log\mongoDB.log

##錯誤日誌採用追加模式,配置這個選項後mongodb的日誌會追加到現有的日誌檔案,而不是從新建立一個新檔案

logappend=true

#啟用日誌檔案,預設啟用

journal=true

#這個選項可以過濾掉一些無用的日誌資訊,若需要除錯使用請設定為false

quiet=true

#埠號 預設為27017

port=27017

在cmd下安裝(提前將mongo放入path) 

 

安裝成功 

可以在瀏覽器中輸入http://localhost:27017 來檢視是否成功

 

可以參考https://www.cnblogs.com/liuzhiying/p/5915741.html

 

使用

from pymongo import MongoClient
import csv

settings = {
    "ip":'127.0.0.1',   #ip
    "port":27017,           #埠
    "db_name" : "mydb",    #資料庫名字,沒有則自動建立
    "set_name" : "test_set"   #集合名字,沒有則自動建立
}
class MyMongoDB(object):
    def __init__(self):
        try:
            self.conn = MongoClient(settings["ip"], settings["port"])
        except Exception as e:
            print(e)
        self.db = self.conn[settings["db_name"]]
        self.my_set = self.db[settings["set_name"]]
    #插入
    def insert(self,dic):
        self.my_set.insert(dic)
        print("插入成功")
    #更新
    def update(self,dic,newdic):
        self.my_set.update(dic,newdic)
        print("更新成功")
    #刪除
    def delete(self,dic):
        self.my_set.remove(dic)
        print("刪除成功")
    #查詢
    def dbFind(self,dic):
        data = self.my_set.find(dic)
        for result in data:
            print(result)
        print("查詢成功")
    #查詢全部
    def findAll(self):
        # 查詢全部
        for i in self.my_set.find():
            print(i)

if __name__ == "__main__":
    dic = {"name": "tom", "age": 18,"gender":"male"}
    dic1 = {"name": "sam", "age": 18,"gender":"male"}
    mongo = MyMongoDB()

    mongo.insert(dic)
    mongo.insert(dic1)
    mongo.findAll()

    mongo.update({"name": "tom"}, {"$set": {"age": "25"}})
    mongo.dbFind({"gender": "male"})
    
#    mongo.delete({"gender":"male"})
#    mongo.delete({"name": "tom"})
    mongo.findAll()
    


    # 將資料寫入到CSV檔案中
    with open(f"test.csv", "w", newline='') as csvfileWriter:
        writer = csv.writer(csvfileWriter)
        # 先寫列名
        # 寫第一行,欄位名
        fieldList = [
            "_id",
            "name",
            "age",
            "gender",
        ]
        writer.writerow(fieldList)
    
        allRecordRes = mongo.my_set.find()
        # 寫入多行資料
        for record in allRecordRes:
            print(f"record = {record}")
            recordValueLst = []
            for field in fieldList:
                if field not in record:
                    recordValueLst.append("None")
                else:
                    recordValueLst.append(record[field])
            try:
                writer.writerow(recordValueLst)
            except Exception as e:
                print(f"write csv exception. e = {e}")