はじめに
MongoDB はドキュメント指向のデータベースです。
柔軟性が高く、Python のコーディングと親和性の高いデータベースです。
この記事では、WSL にて Python から MongoDB を利用するまでの手順をまとめます。
Python からMongoDB を操作
動作環境
- Windows 11
- WSL Ubuntu 20.04
- Python 3.8.10
- MongoDB 3.6.8
事前準備
WSL ディストリビューションの複製(非必須)
お試しで実行する場合は WSL Ubuntu イメージを複製しておくのがお勧めです。
本手順は必須ではありません。
各種インストール
Ubuntu パッケージのアップデート
初めに、Ubuntu パッケージを最新化しておきます。
$ sudo apt update
$ sudo apt upgrade
MongoDB インストール
ここでは Ubuntu の公式リポジトリからインストールする方法を紹介します。
お手軽ですが、MongoDB のバージョンが低いデメリットがあります。
新しいバージョンのインストール方法は、記事の後半で改めて紹介します。
Ubuntu の公式リポジトリを利用する場合は、apt install
でサクッとインストールできます。
$ sudo apt install mongodb
バージョン 3.6.8 の MongoDB がインストールされました。
$ mongod --version
db version v3.6.8
git version: 8e540c0b6db93ce994cc548f000900bdc740f80a
OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020
allocator: tcmalloc
modules: none
build environment:
distarch: x86_64
target_arch: x86_64
service コマンドで MongoDB を起動しておきます。
$ sudo service mongodb start
* Starting database mongodb
Python パッケージインストール
パッケージ管理の pip を導入したうえで、pymongo のパッケージをインストールします。
$ sudo apt install python3-pip
$ pip install pymongo
Python ソースコード
MongoDB にアクセスするためのサンプルコードです。
import pymongo
client = pymongo.MongoClient("localhost", 27017)
db = client.testdb
collection = db.address
collection.insert_one({"name": "山田", "phone": "090-xxxx-xxxx"})
for doc in collection.find():
print(doc)
MongoDB は、データベース、コレクション、ドキュメントの階層構造を持つようなデータベースです。
ここでは、testdb
データベース、address
コレクションを生成して、その配下に山田の連絡先をドキュメントとしてインサートしています。
実行すると、コレクションを全件検索した結果が出力されます。
$ python3 main.py
{'_id': ObjectId('632712eb0259cc2ce1656436'), 'name': '山田', 'phone': '090-xxxx-xxxx'}
なお、サンプルコードではコレクションのクリアを行っていないので、実行するたびにドキュメントの件数が1件ずつ増えていきます。
最新版の MongoDB をインストールする場合
新しいバージョンの MongoDB をインストールするための手順です。
MongoDB のリポジトリからのインストール手順です。
$ wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
$ sudo apt update
$ sudo apt install mongodb-org
バージョン 6.0.1 の MongoDB がインストールできました。
$ mongod --version
db version v6.0.1
Build Info: {
"version": "6.0.1",
"gitVersion": "32f0f9c88dc44a2c8073a5bd47cf779d4bfdee6b",
"openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
この手段でインストールした場合は、/etc/init.d
にスクリプトがインストールされないため、service
コマンドで MongoDB を起動することができません。
mongod を直接キックして起動する必要があります。
$ sudo mkdir -p /data/db
$ sudo mongod
最新版のインストールについては、以下が参考ドキュメントになります。