Pythonでmongoengineを使用しMongoDBAtlasデータベース内のコレクションのリストを取得する

Pythonでmongoengineを使用しMongoDBAtlasデータベース内のコレクションのリストを取得してみます。

今回はmongoengineを用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■MongoDBAtlasデータベース内にコレクションを用意する

mongoengineを使用しMongoDBAtlasデータベース内のコレクションのリストを取得してみますが、その前に「Log in | MongoDB(https://account.mongodb.com/account/login)」にアクセスし、取得しているMongoDBAtlasのアカウント(無料プラン)でログインします。

ログインすると「Database Deployments」が表示されます。今回は事前に「Cluster0」というデータベースを作成してあります。

なお、「Cluster0」というデータベース内には「test_1」というコレクションを作成しています。

■mongoengineを使用しMongoDBAtlasデータベース内のコレクションのリストを取得する

MongoDBAtlasデータベース内にコレクションを用意することができましたので、Pythonでmongoengineを使用しMongoDBAtlasデータベース内のコレクションのリストを取得するスクリプトを書いていきます。

■コード

from mongoengine import *
con = connect(host="データベースの接続のためのコード")

collections=con['Cluster0'].list_collection_names()

for collection in collections:
    print (collection)

「from import」でmongoengineモジュールの全て(アスタリスク”*”)を呼び出します。

その後、conという変数を定義し、その中でconnect()を用います。括弧内に引数,パラメータとして、今回の「Cluster0」データベースに接続するためのコードを渡します。

データベースに接続するためのコードの発行は、先程の「Database Deployments」で「Cluster0」データベースが表示されている状態で「Connect」ボタンをクリックします。

クリックすると「Connect to ****(データベース名)」というウインドウが表示され、ウインドウ内に「Connect your application」の項目があるので、こちらをクリックします。

クリックすると、「Select your driver and version」という項目などが表示されるので、まずはお使いの言語とバージョンを選択します。今回は「Python」と「3.6 or later」を選択しています。

con = connect(host="mongodb+srv://kazu:<password>@cluster0.cywla.mongodb.net/myFirstDatabase?retryWrites=true&w=majority")

次に「Add your connection string into your application code」の項目に表示されたコードを今回のconnect(host=””)に、上記のように貼り付けます。なお、「<password>」はデータベースのパスワードに変更します。変更する際は”< >”の部分も削除します。

削除後、collectionsという変数を定義し、その中でcon変数に対して角括弧(”[ ]”)を用いて「Cluster0」を指定します。指定後、ドッド(”.”)を使用しlist_collection_names()を用います。これでデータベース内のコレクションのリストが、collections変数に格納されました。

格納後、for…in文を用いて、collections変数からコレクションのリストを順番に取り出し、その情報をcollection変数に格納し、print()で取り出した情報を出力させます。

■実行・検証

このスクリプトを「m_db.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\cryptography\x509\base.py:531: CryptographyDeprecationWarning: Parsed a negative serial number, which is disallowed by RFC 5280.
return rust_x509.load_pem_x509_certificate(data)
test_1

実行してみると、mongoengineを使用しMongoDBAtlasの指定したデータベース内に存在するコレクションを取得し出力させることができました。

コメント

タイトルとURLをコピーしました