PythonでMongoデータベースの使用してみます。
PythonでMongoデータベースを使用する際には、Mongoモジュール・ライブラリを事前にインストールしておく必要があります。
またMongoデータベースと対話するためには、Windows10にMongoDB(MongoDB Community Server)をインストールしておく必要があります。MongoDB Community Serverのダウンロードはこちら(https://www.mongodb.com/try/download/community)から行えます。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■PythonでMongoデータベースを作成し、コレクションを追加し、データを挿入する
では、早速PythonでMongoデータベースを作成し、コレクションを追加し、データを挿入してみます。
■コード
import pymongo client = pymongo.MongoClient("mongodb://localhost:27017/") db = client["test"] my_collection = db["data"] data_1 = { "Name":"test1", "Age":25, } my_collection.insert_one(data_1) for item in my_collection.find(): print(item)
インポートでpymongoモジュールを呼び出します。
その後に、clientという変数を作成し、その中でpymongo.MongoClient()関数を使用します。pymongo.MongoClient()関数の括弧内には、「mongodb://localhost:27017/」と記述します。デフォルトのホストとポートに接続することができます。
次に、dbという変数を作成し、その中にclient変数を格納し、接続したデフォルトのホストとポートに、「test」という名前の空のデータベースを作成します。作成後、db変数に格納します。
格納後、my_collectionという変数を作成し、その中にdb変数を格納し、作成した空のデータベースにコレクションを追加します。コレクションの名前を今回は「data」とします。なお、各データベースには、複数のコレクションを含めることが可能です。コレクションを追加後、my_collection変数に格納します。
その後、「data」というコレクションに追加するデータ(ドキュメント)を追加します。追加するために、「data_1」という追加するデータを作成します(data_1という変数の作成)。なお、MongoDBでは、フィールド(データ項目)は、JavaScriptのオブジェクト記法を使って、中括弧({})の中にカプセル化されています。各フィールドは、キーと値のペアで構成されます。
フィールド名 (キー) は引用符で囲み、その後にコロンを置いてから関連する値を入れます。テキストの値も引用符で囲みますが、数字は囲みません。値には、他のオブジェクトや配列を含めることもできます。配列は、データのリストやその他のキーと値のペアを格納することができ、角括弧([])で示されます。
コレクションに追加するデータを作成後、今回は1つのデータを追加するために、my_collection.insert_one()関数を使用します。my_collection.insert_one()関数の括弧内には、引数,パラメーターとして、先ほど作成したdata_1変数を渡します。これでコレクションにdata_1変数内のデータが追加されます。なお、コレクションに複数のデータを追加する場合はinsert_many()関数を使用します。
最後にコレクションに追加したデータを出力してみます。今回出力するために、for文を使用し、繰り返し処理でコレクション内の全てのデータをprint()関数で出力してみます。
■実行
このスクリプトを「db_test.py」という名前で保存し、コマンドプロンプトから実行してみます。
実行してみると、「test」という空のデータベースに「data」というコレクションが追加。追加されたコレクションに、今回作成したデータ(data_1変数)が追加されて、出力されました。
■データを読みやすい形式で出力する
出力後、今回コレクションに追加したデータを出力するために記述した内容だと人が読み取るのが難しいので、データを読みやすい形で出力してみます。
■コード
import pymongo from pprint import pprint client = pymongo.MongoClient("mongodb://localhost:27017/") db = client["test"] my_collection = db["data"] data_1 = { "Name":"test1", "Age":25, } my_collection.insert_one(data_1) for item in my_collection.find(): pprint(item)
データを読みやすい形で出力するために、今回はpprintモジュールを使用します。pprintモジュールはPythonの標準ライブラリなので、事前にインストールする必要はありません。
■実行
「db_test.py」のスクリプトの内容を変更し、コマンドプロンプトから実行してみます。
実行してみると、pprintモジュールを使用したことで、割と読みやすい形でデータが出力されました。
■MongoDB Community Serverをインストールしていない場合
MongoDB Community Serverをインストールしていない場合に、スクリプトを実行させると、下記のエラーが発生します。
Traceback (most recent call last):
File “db_test.py”, line 14, in <module>
my_collection.insert_one(data_1)
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\collection.py”, line 698, in insert_one
self._insert(document,
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\collection.py”, line 613, in _insert
return self._insert_one(
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\collection.py”, line 602, in _insert_one
self.__database.client._retryable_write(
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\mongo_client.py”, line 1497, in _retryable_write
with self._tmp_session(session) as s:
File “C:\Program Files\Python38\lib\contextlib.py”, line 113, in __enter__
return next(self.gen)
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\mongo_client.py”, line 1829, in _tmp_session
s = self._ensure_session(session)
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\mongo_client.py”, line 1816, in _ensure_session
return self.__start_session(True, causal_consistency=False)
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\mongo_client.py”, line 1766, in __start_session
server_session = self._get_server_session()
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\mongo_client.py”, line 1802, in _get_server_session
return self._topology.get_server_session()
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\topology.py”, line 496, in get_server_session
self._select_servers_loop(
File “C:\Users\user_\AppData\Roaming\Python\Python38\site-packages\pymongo\topology.py”, line 215, in _select_servers_loop
raise ServerSelectionTimeoutError(
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。, Timeout: 30s, Topology Description: <TopologyDescription id: 60cfe7db309832a20888cfbd, topology_type: Single, servers: [<ServerDescription (‘localhost’, 27017) server_type: Unknown, rtt: None, error=AutoReconnect(‘localhost:27017: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。’)>]>
コメント