pythonからMongoDBを操作するまとめ。
以下は公式ドキュメントへのリンクです。
https://pymongo.readthedocs.io/en/stable/tutorial.html
目次
MongoDBのインストール
xcode-select --installbrew tap mongodb/brewbrew install mongodb-community@6.0Pymongo
Pymongoのインストール
pip install pymongoMongoDBサーバーへの接続
from pymongo import MongoClient
client = MongoClient('localhost', 27017)データベースの作成
db = client['db1']コレクション(テーブル)の作成
MongoDBではMySQLのテーブルをコレクションと呼んでいます。
collection = db['c1']ドキュメント(列)の挿入-insert_one()
d = {
"Username": "User1",
"Email":"user1@gmail.com",
"Adress":"Location1",
"isPublic": True
}
doc1 = collection.insert_one(d)複数ドキュメントの挿入
ループを使用して、ドキュメントを複数挿入します。
for i in range(1,51):
is_public: bool = (i%2==0)
d_i = {
"Username": f"User{i}",
"Email":f"user{i}@gmail.com",
"Adress":f"Location{i}",
"isPublic": is_public
}
doc_i = collection.insert_one(d_i)
>>>
{'_id': ObjectId('6405b8d7a5cf86f3f5596b07'), 'Username': 'User1', 'Email': 'user1@gmail.com', 'Adress': 'Location1', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b08'), 'Username': 'User2', 'Email': 'user2@gmail.com', 'Adress': 'Location2', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b09'), 'Username': 'User3', 'Email': 'user3@gmail.com', 'Adress': 'Location3', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b0a'), 'Username': 'User4', 'Email': 'user4@gmail.com', 'Adress': 'Location4', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b0b'), 'Username': 'User5', 'Email': 'user5@gmail.com', 'Adress': 'Location5', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b0c'), 'Username': 'User6', 'Email': 'user6@gmail.com', 'Adress': 'Location6', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b0d'), 'Username': 'User7', 'Email': 'user7@gmail.com', 'Adress': 'Location7', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b0e'), 'Username': 'User8', 'Email': 'user8@gmail.com', 'Adress': 'Location8', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b0f'), 'Username': 'User9', 'Email': 'user9@gmail.com', 'Adress': 'Location9', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b10'), 'Username': 'User10', 'Email': 'user10@gmail.com', 'Adress': 'Location10', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b11'), 'Username': 'User11', 'Email': 'user11@gmail.com', 'Adress': 'Location11', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b12'), 'Username': 'User12', 'Email': 'user12@gmail.com', 'Adress': 'Location12', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b13'), 'Username': 'User13', 'Email': 'user13@gmail.com', 'Adress': 'Location13', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b14'), 'Username': 'User14', 'Email': 'user14@gmail.com', 'Adress': 'Location14', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b15'), 'Username': 'User15', 'Email': 'user15@gmail.com', 'Adress': 'Location15', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b16'), 'Username': 'User16', 'Email': 'user16@gmail.com', 'Adress': 'Location16', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b17'), 'Username': 'User17', 'Email': 'user17@gmail.com', 'Adress': 'Location17', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b18'), 'Username': 'User18', 'Email': 'user18@gmail.com', 'Adress': 'Location18', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b19'), 'Username': 'User19', 'Email': 'user19@gmail.com', 'Adress': 'Location19', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b1a'), 'Username': 'User20', 'Email': 'user20@gmail.com', 'Adress': 'Location20', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b1b'), 'Username': 'User21', 'Email': 'user21@gmail.com', 'Adress': 'Location21', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b1c'), 'Username': 'User22', 'Email': 'user22@gmail.com', 'Adress': 'Location22', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b1d'), 'Username': 'User23', 'Email': 'user23@gmail.com', 'Adress': 'Location23', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b1e'), 'Username': 'User24', 'Email': 'user24@gmail.com', 'Adress': 'Location24', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b1f'), 'Username': 'User25', 'Email': 'user25@gmail.com', 'Adress': 'Location25', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b20'), 'Username': 'User26', 'Email': 'user26@gmail.com', 'Adress': 'Location26', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b21'), 'Username': 'User27', 'Email': 'user27@gmail.com', 'Adress': 'Location27', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b22'), 'Username': 'User28', 'Email': 'user28@gmail.com', 'Adress': 'Location28', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b23'), 'Username': 'User29', 'Email': 'user29@gmail.com', 'Adress': 'Location29', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b24'), 'Username': 'User30', 'Email': 'user30@gmail.com', 'Adress': 'Location30', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b25'), 'Username': 'User31', 'Email': 'user31@gmail.com', 'Adress': 'Location31', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b26'), 'Username': 'User32', 'Email': 'user32@gmail.com', 'Adress': 'Location32', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b27'), 'Username': 'User33', 'Email': 'user33@gmail.com', 'Adress': 'Location33', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b28'), 'Username': 'User34', 'Email': 'user34@gmail.com', 'Adress': 'Location34', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b29'), 'Username': 'User35', 'Email': 'user35@gmail.com', 'Adress': 'Location35', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b2a'), 'Username': 'User36', 'Email': 'user36@gmail.com', 'Adress': 'Location36', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b2b'), 'Username': 'User37', 'Email': 'user37@gmail.com', 'Adress': 'Location37', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b2c'), 'Username': 'User38', 'Email': 'user38@gmail.com', 'Adress': 'Location38', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b2d'), 'Username': 'User39', 'Email': 'user39@gmail.com', 'Adress': 'Location39', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b2e'), 'Username': 'User40', 'Email': 'user40@gmail.com', 'Adress': 'Location40', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b2f'), 'Username': 'User41', 'Email': 'user41@gmail.com', 'Adress': 'Location41', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b30'), 'Username': 'User42', 'Email': 'user42@gmail.com', 'Adress': 'Location42', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b31'), 'Username': 'User43', 'Email': 'user43@gmail.com', 'Adress': 'Location43', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b32'), 'Username': 'User44', 'Email': 'user44@gmail.com', 'Adress': 'Location44', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b33'), 'Username': 'User45', 'Email': 'user45@gmail.com', 'Adress': 'Location45', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b34'), 'Username': 'User46', 'Email': 'user46@gmail.com', 'Adress': 'Location46', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b35'), 'Username': 'User47', 'Email': 'user47@gmail.com', 'Adress': 'Location47', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b36'), 'Username': 'User48', 'Email': 'user48@gmail.com', 'Adress': 'Location48', 'isPublic': True}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b37'), 'Username': 'User49', 'Email': 'user49@gmail.com', 'Adress': 'Location49', 'isPublic': False}
{'_id': ObjectId('6405b8d7a5cf86f3f5596b38'), 'Username': 'User50', 'Email': 'user50@gmail.com', 'Adress': 'Location50', 'isPublic': True}データの一括追加-insert_many()
d1 = {'Username': 'User46', 'Email': 'user46@gmail.com', 'Adress': 'Location46', 'isPublic': True}
d2 = {'Username': 'User47', 'Email': 'user47@gmail.com', 'Adress': 'Location47', 'isPublic': False}
ds = [d1,d2]
collection.insert_many(ds)
>>
{'_id': ObjectId('6405bbb0a22e2f756bbde55e'), 'Username': 'User46', 'Email': 'user46@gmail.com', 'Adress': 'Location46', 'isPublic': True}
{'_id': ObjectId('6405bbb0a22e2f756bbde55f'), 'Username': 'User47', 'Email': 'user47@gmail.com', 'Adress': 'Location47', 'isPublic': False}データの抽出(find)
コレクション内の全てのデータを取得します。
for d in collection.find():
print(d)コレクションの初期化(全削除)
collection.delete_many({})クラス化
操作をクラスにしてまとめます。
from pymongo import *
import pymongo.collection
import pymongo.cursor
class mongoDatabase:
def __init__(self) -> None:
self.client : MongoClient = MongoClient('localhost', 27017)
self.db = None
self.collections : list[pymongo.collection.Collection]= []
def create_db(self,dbname:str) -> None:
self.db = self.client[f'{dbname}']
print(f"Database '{dbname}' created.")
def create_table(self,tablename:str) -> None:
if self.db is not None:
collection = self.db[tablename]
print(f"Table '{tablename}' created.")
self.collections.append(collection)
else:
print('Database empty.')
def insert_one(self,tablename:str,d:dict) -> None:
for i in self.collections:
if i.name is tablename:
i.insert_one(d)
print(f"Data inserted to {i.name}")
def get_documents(self,tablename:str) ->pymongo.cursor.Cursor:
for i in self.collections:
if i.name is tablename:
return i.find()
return self.collections[0].find()
def drop_table(self,tablename:str) -> None:
for i in self.collections:
if i.name is tablename:
i.delete_many({})
print(f"{table1} was dropped.")
db = mongoDatabase()
db_name = "database1"
table1 = "table1"
db.create_db(db_name)
db.create_table(table1)
db.insert_one(table1,{'Username': 'User46', 'Email': 'user46@gmail.com', 'Adress': 'Location46', 'isPublic': True})
for i in db.get_documents(table1):
print(i)
db.drop_table(table1)
>>>
Database 'database1' created.
Table 'table1' created.
Data inserted to table1
{'_id': ObjectId('6405c0b554127f9917940bf4'), 'Username': 'User46', 'Email': 'user46@gmail.com', 'Adress': 'Location46', 'isPublic': True}
table1 was dropped.

