پایگاه داده MongoDB و پایتون
پایگاه داده MongoDB یک پایگاه داده مبتنی بر پلتفرم و سند محور است که بر روی مفهوم مجموعه ها و اسناد کار می کند. پایگاه داده MongoDB سرعت بالا، در دسترس بودن بالا و مقیاس پذیری بالا را ارائه می دهد. اولین چیزی که به ذهن میرسد این سوال است چرا این پایگاه داده را انتخاب کردهایم؟
دلایل انتخاب پایگاه داده Mongo:
- از ساختار داده سلسله مراتبی پشتیبانی می کند.
- از آرایه های مرتبط مانند Dictionaries در پایتون پشتیبانی می کند.
- درایورهای داخلی پایتون برای اتصال برنامه پایتون به پایگاه داده. مثال- PyMongo
- برای Big Data طراحی شده است.
- پیاده سازی MongoDB بسیار آسان است.
ابتدا لازم است این پایگاه داده را بر روی سیستم خودنصب کنید.
1- پس از نصب،پایگاه داده MongoDB را از خط فرمان با استفاده از یکی از دو دستور زیر فراخوانی کنید:
دستور اول:
mongod
دستور دوم:
net start MongoDB
شماره پورت به طور پیش فرض 27017 تنظیم شده است (آخرین خط در تصویر بالا). پایتون یک کتابخانه بومی برای MongoDB دارد. نام کتابخانه موجود “PyMongo” است. برای وارد کردن این، دستور زیر را اجرا کنید:
from pymongo import MongoClient
2-ایجاد یک اتصال:
اولین مورد پس از وارد کردن ماژول، ایجاد یک MongoClient است.
from pymongo import MongoClient client = MongoClient()
پس از این کار به هاست و پورت پیش فرض متصل شوید. اتصال به هاست و پورت به صراحت انجام می شود. دستور زیر برای اتصال MongoClient در لوکال هاست که روی پورت شماره 27017 اجرا می شود استفاده می شود.
client = MongoClient(‘host’, port_number) example:- client = MongoClient(‘localhost’, 27017)
همچنین با استفاده از دستور زیر قابل انجام است:
client = MongoClient(“mongodb://localhost:27017/”)
3-دسترسی به پایگاه داده:
برای ایجاد یک پایگاه داده یا تغییر به یک پایگاه داده موجود، از موارد زیر استفاده می کنیم:
روش 1: به سبک دیکشنری
mydatabase = client[‘name_of_the_database’]
روش 2:
mydatabase = client.name_of_the_database
4-دسترسی به مجموعه:
مجموعه ها معادل جداول در RDBMS هستند. ما به یک مجموعه در PyMongo دسترسی داریم به همان روشی که به جداول در RDBMS دسترسی داریم. برای دسترسی به جدول، نام جدول “myTable” پایگاه داده را بگویید، به فرض”mydatabase”.
روش اول:
mycollection = mydatabase[‘myTable’]
روش دوم:
mycollection = mydatabase.myTable
MongoDB پایگاه داده را در قالب فرهنگ لغت مانند نشان داده شده ذخیره می کند:
record = { title: 'MongoDB and Python', description: 'MongoDB is no SQL database', tags: ['mongodb', 'database', 'NoSQL'], viewers: 104 }
«_id» کلید ویژهای است که اگر برنامهنویس فراموش کند به صراحت اضافه کند، بهطور خودکار اضافه میشود. _id یک عدد هگزادسیمال 12 بایتی است که منحصر به فرد بودن هر سند درج شده را تضمین می کند.
5-درج داده ها در یک مجموعه:
insert_one() or insert_many()
ما معمولاً از سند متد insert_one() در مجموعه های خود استفاده می کنیم. بگویید، ما میخواهیم دادههایی را که بهعنوان رکورد نامگذاری شدهاند، در «myTable» «mydatabase» وارد کنیم.
rec = myTable.insert_one(record)
کل کد زمانی که باید پیاده سازی شود به این شکل میباشد.
# importing module from pymongo import MongoClient # creation of MongoClient client=MongoClient() # Connect with the portnumber and host client = MongoClient(“mongodb://localhost:27017/”) # Access database mydatabase = client[‘name_of_the_database’] # Access collection of the database mycollection=mydatabase[‘myTable’] # dictionary to be added in the database rec={ title: 'MongoDB and Python', description: 'MongoDB is no SQL database', tags: ['mongodb', 'database', 'NoSQL'], viewers: 104 } # inserting the data in the database rec = mydatabase.myTable.insert(record)
6- کوئری در MongoDB:
توابع پرس و جوی خاصی وجود دارد که برای فایل کردن داده ها در پایگاه داده استفاده می شود. دو توابع پرکاربرد عبارتند از:
1-()find
find() برای بدست آوردن بیش از یک سند در نتیجه پرس و جو استفاده می شود.
for i in mydatabase.myTable.find({title: 'MongoDB and Python'}) print(i)
با این کار تمام اسناد موجود در myTable mydatabase که عنوان آن “MongoDB and Python” است، خروجی می دهد.
2-()count
count() برای بدست آوردن تعداد اسناد با نام در پارامترها استفاده می شود.
print(mydatabase.myTable.count({title: 'MongoDB and Python'}))
با این کار تعداد اسناد موجود در myTable mydatabase که عنوان آن “MongoDB and Python” است را نمایش می دهد.
این دو تابع پرس و جو را می توان برای به دست آوردن نتیجه همانطور که در زیر نشان داده شده است، جمع کرد.
print(mydatabase.myTable.find({title: 'MongoDB and Python'}).count())
برای چاپ تمام اسناد/ورود داخل «myTable» پایگاه داده «mydatabase»: از کد زیر استفاده کنید:
from pymongo import MongoClient try: conn = MongoClient() print("Connected successfully!!!") except: print("Could not connect to MongoDB") # database name: mydatabase db = conn.mydatabase # Created or Switched to collection names: myTable collection = db.myTable # To find() all the entries inside collection name 'myTable' cursor = collection.find() for record in cursor: print(record)
دیدگاهتان را بنویسید