前回はユーザー登録情報を画面からAPIへ送信するところまで作成しました。
今回はDBとの接続部分を行っていきます。
MongoDBのセットアップ
ベースにしているudemyの講座と同様に、DBにはMongoDBを利用していこうと思います。
ユーザー登録がまだの場合の手順を記載しますので、すでに登録済みの方は適宜読み飛ばしてください。
https://www.mongodb.com/ にアクセスして "Start Free" をクリックします。
Googleアカウントでのサインアップか、名前等を直接入力して登録する方法を選択できます。お好みの方を選択して登録してください。
利用規約の同意等の画面を進めていくと次の画面が表示されると思います。今回はFreeプランで進めていきますので、右端の"Create"ボタンをクリックします。
次に、クラスタ作成画面が表示されます。
"Cloud Provider & Region"はお好みのものを選択してください。僕は"aws"の"Tokyo(ap-northeast-1)"を選択しました。
"Cluster Tier" と "Additional Settings" はデフォルトのままで構いません。
"Cluster Name" は "ToittaCluster" としました。
入力が完了したら "Create Cluster" をクリックします。
今度は "Security Quickstart" 画面が表示されます。
今回は認証方法に "Username and Password" を利用しようと思いますのでこちらを選択してください。僕はユーザー名を "admin" とし、パスワードに適当な文字列を設定しました。
その下にある "IP Access List" はアクセス可能なIPアドレスを指定します。本来は適切に設定すべきではありますがここでは一旦 "0.0.0.0/0" のみを指定してどこからでもアクセスできるようにしておきます。
ここまで完了したらクラスタがデプロイされて利用可能になるはずです。
クラスタ名の横の "Connect" ボタンをクリックし、"Connect your application" を選択すると接続情報を表示してくれます。
今回はPythonから利用するので、"DRIVER" を "Python", "VERSION" を "3.12 or later" にして表示される文字列をメモしておきましょう。
これでMongoDBのセットアップは完了です。
Python側のセットアップ
ここからはPython側のセットアップを行っていきます。
まずは下記のように requirements.txt に pymongo を追加していきます。
Flask
pymongo[srv]
下記を実行しpymongoのインストールとconstraints.txtの更新をしておきます。
$ cd /path/to/project/server
$ pip install -r requirements.txt -c constraints.txt
$ pip freeze > constraints.txt
これでPythonからMongoDBが利用可能になっているはずなので確認しておきましょう。
$ python
>>> from pymongo.mongo_client import MongoClient
>>> from pymongo.server_api import ServerApi
>>> client = MongoClient("mongodb+srv://admin:XXXXXXX@toittacluster.YYYYYYY.mongodb.net/myFirstDatabase?retryWrites=true&w=majority", server_api=ServerApi('1'))
>>> db = client.test_database
>>> test_collection = db.test_collection
>>> result = test_collection.insert_one({"name": "hoge", "value": "fuga", "age": 100})
MongoClient の引数には先程メモした値を利用します。admin:XXXXXXX
の部分は設定したMongoDBアクセス用のIDとパスワードに書き換えてください。
上記コードを実行したあとでMongoDBの画面へ行くとデータが追加されていることが確認できると思います。
これでDBのセットアップが完了しました。次回からユーザー登録機能の続きを実装していきます。