MongoDB—安裝與配置
阿新 • • 發佈:2018-12-14
在學習爬蟲時,遇到需要儲存資料的情況,雖然可以直接儲存到本地,但是遇到大量資料,就比較麻煩,所以我學習了MongoDB的使用,MongoDB是一種非關係型資料庫,資料以鍵值存貯,類似於JSON格式。
1.下載相關連結
- 官方網站:https://www.mongodb.com
- 官方文件:https://docs.mongodb.com
- GitHub:https://github.com/mongodb
下載對應版本的安裝包進行傻瓜式安裝
注意:安裝目錄不得有空格
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}")