1. 程式人生 > >Python3.x中使用MongoDB資料庫的簡單方法-------PyCharm

Python3.x中使用MongoDB資料庫的簡單方法-------PyCharm

為了能夠PyCharm中使用MongoDB,需要先引入MongoDB第三方庫,具體的引入方法如下:

第一:先配置MongoDB外掛

1 開啟PyCharm,單擊  左上角“file”→“settings” ,如下圖

   

Plugins-->Browse repositories-->Mongo-->Install

第二步:加入包:pymongo

第三步:開始練習

#引入MonogoClient包
from pymongo import MongoClient
from bson.objectid import ObjectId

#連線資料庫
#資料庫需要提供一個地址和埠即可
conn=MongoClient('localhost',27017)
#conn=MongoClient('Mongodb://localhost:27017/')

#建立資料庫
#Mongodb不需要提前建立好資料庫,而是直接使用,如果發現沒有則自動建立
#會建立一個testDB的資料庫,但是在沒有插入資料的時候,該資料庫在管理工具裡面看不到
db=conn.testdb

#插入資料
#單條記錄插入
db.col.insert({'name':'aa','province':'SX','age':25})

#多條記錄插入
db.col.insert([
    {"name":'yanying','province':'江蘇','age':25},
    {"name":'張三','province':'浙江','age':24},
    {"name":'張三1','province':'浙江1','age':25},
    {"name":'張三2','province':'浙江2','age':26},
    {"name":'張三3','province':'浙江3','age':28},
])

#查詢資料
#使用find_one()來查詢一條記錄
db.col.find_one()
#查詢所有
#如果需要查詢出所有的記錄,則可以使用db.col.find()。但是查出來的十一個結果資源集
for item in db.col.find():
    print(item)


#條件查詢
for item in db.col.find({'name':"yanying"}):
    print(item)

#統計查詢
#上面的程式碼可以統計出所有的記錄數量
db.col.find().count()

#根據_id查詢資料
#_id是mongodb自動生成的id,其型別為ObjectId,想要使用就需要轉換型別
#需要引入庫:ObjectId
#這樣就可以直接使用_id進行查詢了
collection.find_one({'_id':ObjectId('592550e5d92fac0b8c449f87')})


#結果排序
#只需要將排序的欄位放入sort方法即可,Mongodb預設為升序
db.col.find().sort('age')


#更新資料
#更新資料只需要一個條件和需要更新的資料即可
db.col.update({'_id':ObjectId('592550e5d92fac0b8c449f87')},{'$set':{'name':'王二麻子'}})

#刪除資料
#資料刪除使用remove()方法,如果方法帶條件,則刪除指定條件的資料,否則刪除全部
#刪除name為王二麻子的使用者
db.col.remove({'name':'王二麻子'})

#刪除全部資料(慎用)
#db.col.remove()

第四步:執行

在執行中如果出現如下錯誤:

是因為在PyCharm中呼叫MongoDB資料庫時,由於沒有啟動本地的MongoDB服務引起。

解決方案:

首先通過win+R開啟命令列視窗,輸入cmd(如下圖) 

開啟命令列視窗 

用cd命令開啟mongod.exe所在的目錄,並輸入mongod.exe --nojournal --dbpath .(注意–dbpath後面有個點) 

如果出現‘ [initandlisten] waiting for connections on port 27017’提示說明伺服器已經啟動成功 

重新在PyCharm中執行程式(執行成功)

{'_id': ObjectId('5be7ff56ec882c935834bcad'), 'name': 'aa', 'province': 'SX', 'age': 25}
{'_id': ObjectId('5be7ff57ec882c935834bcae'), 'name': 'yanying', 'province': '江蘇', 'age': 25}
{'_id': ObjectId('5be7ff57ec882c935834bcaf'), 'name': '張三', 'province': '浙江', 'age': 24}
{'_id': ObjectId('5be7ff57ec882c935834bcb0'), 'name': '張三1', 'province': '浙江1', 'age': 25}
{'_id': ObjectId('5be7ff57ec882c935834bcb1'), 'name': '張三2', 'province': '浙江2', 'age': 26}
{'_id': ObjectId('5be7ff57ec882c935834bcb2'), 'name': '張三3', 'province': '浙江3', 'age': 28}
{'_id': ObjectId('5be7ff57ec882c935834bcae'), 'name': 'yanying', 'province': '江蘇', 'age': 25}