djangoからmongodbへ接続するためのライブラリについて
- djangoやpythonにまだ慣れていない人(=自分)は、pythonからmongodbにアクセスするためのライブラリを利用しようと検討しましたが、このライブラリを使うとdjangoの恩恵を利用できない(=自分がしらないだけかも)とわかり試行錯誤しておりましたが、MySQLに変更しようと断念しようと思ったときに下記のライブラリにでいました。
なんとまぁ、Django専用のライブラリがありました。 nesdis.github.io
djongoの利用方法
- インストール(Dockerfileの内容抜粋)
## Django RUN pip3.8 install --upgrade pip RUN pip3.8 install django RUN pip3.8 install djongo
- プロジェクト関連のフォルダにあるsettings.pyファイルに下記の記述する。NAMEで指定するのはDB名です。
DATABASES = { 'default': { 'ENGINE': 'djongo', 'NAME': 'hoge', } }
- pymongoではできなかったdjongoでmigrateコマンドの実行に成功できました。
# python3.8 manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK
- DBにもdjango関連のコレクションが作成できていることを確認しました。
$ mongo > use hoge ## DB指定 > show collections << コレクション一覧 __schema__ auth_group auth_group_permissions auth_permission auth_user auth_user_groups auth_user_user_permissions django_admin_log django_content_type django_migrations django_session
前回の記事でDockerfileをdocker-composeファイルで指定する場合
- 下記の記述で起動しますが、migrateをコマンドも追加しようか検討中です。
version: '3.1' services: django-mongodb: build: context: ./ dockerfile: ./containers/backend/Dockerfile container_name: winlogic-backend-api-db command: bash -c "mongod --fork --port 27017 --bind_ip 127.0.0.1 --logpath /data/db/mongod.log && python3.8 /srv/api/src/backend_api/manage.py runserver 0.0.0.0:8000" volumes: - ./backend/:/srv/api/src/backend_api/ ports: - 8000:8000 - 27017:27017
開発で利用しているPCはこちらです。