[Python][WSL] Python から MongoDB を操作する

  • 2022年9月18日
  • 2022年9月18日
  • Python
  • 3View
  • 0件

はじめに

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

最新版のインストールについては、以下が参考ドキュメントになります。