Python MongoDB

MongoDB 是目前最流行的 NoSQL 資料庫之一,使用的資料型態 BSON(類似 JSON)。

MongoDB 資料庫安裝與介紹可以檢視我們的 MongoDB 教學。


PyMongo

Python 要連線 MongoDB 需要 MongoDB 驅動,這裡我們使用 PyMongo 驅動來連接。

pip 安裝

pip 是一個通用的 Python 套件管理工具,提供了對 Python 套件的搜尋、下載、安裝、解除安裝的功能。

安裝 pymongo:

$ python3 -m pip3 install pymongo

也可以指定安裝的版本:

$ python3 -m pip3 install pymongo==3.5.1

更新 pymongo 指令:

$ python3 -m pip3 install --upgrade pymongo

easy_install 安裝

舊版的 Python 可以使用 easy_install 來安裝,easy_install 也是 Python 套件管理工具。

$ python -m easy_install pymongo

更新 pymongo 指令:

$ python -m easy_install -U pymongo

測試 PyMongo

接下來我們可以建立一個測試檔案 demo_test_mongodb.py,程式碼如下:

demo_test_mongodb.py 檔案程式碼:

#!/usr/bin/python3 import pymongo

執行以上程式碼檔案,如果沒有出現錯誤,表示安裝成功。


建立資料庫

建立一個資料庫

建立資料庫需要使用 MongoClient 物件,並且指定連接的 URL 地址和要建立的資料庫名。

如下例項中,我們建立的資料庫 twcode01db :

範例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["twcode01db"]

注意: 在 MongoDB 中,資料庫衹有在內容寫入後才會建立! 就是說,資料庫建立後要建立群集(資料表)並寫入一個檔案(紀錄),資料庫才會真正建立。

判斷資料庫是否已存在

我們可以讀取 MongoDB 中的所有資料庫,並判斷指定的資料庫是否存在:

範例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient('mongodb://localhost:27017/') dblist = myclient.list_database_names() # dblist = myclient.database_names() if "twcode01db" in dblist: print("資料庫已存在!")

注意:database_names 在最新版本的 Python 中已廢棄,Python3.7+ 之後的版本改為了 list_database_names()。


建立群集

MongoDB 中的群集類似 SQL 的表。

建立一個群集

MongoDB 使用資料庫物件來建立群集,例項如下:

範例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient("mongodb://localhost:27017/") mydb = myclient["twcode01db"] mycol = mydb["sites"]

注意: 在 MongoDB 中,群集衹有在內容寫入後才會建立! 就是說,建立群集(資料表)後要再寫入一個檔案(紀錄),群集才會真正建立。

判斷群集是否已存在

我們可以讀取 MongoDB 資料庫中的所有群集,並判斷指定的群集是否存在:

範例

#!/usr/bin/python3 import pymongo myclient = pymongo.MongoClient('mongodb://localhost:27017/') mydb = myclient['twcode01db'] collist = mydb. list_collection_names() # collist = mydb.collection_names() if "sites" in collist: # 判斷 sites 群集是否存在 print("群集已存在!")

注意:collection_names 在最新版本的 Python 中已廢棄,Python3.7+ 之後的版本改為了 list_collection_names()。


增、刪、改、查等操作

下表列出了 MongoDB 的更多操作,詳情可點選具體連結:

序號 功能
1 新增資料
2 搜尋資料
3 修改資料
4 資料排序
5 刪除資料