مقدمة
في عالم تطوير البرمجيات الحديث، أصبحت قواعد بيانات NoSQL جزءًا لا يتجزأ من البنية التقنية. تُعد MongoDB، باعتبارها واحدة من أبرز أنظمة إدارة قواعد البيانات الوثائقية، أداة قوية للمطورين للتعامل مع البيانات غير المهيكلة. يعمل PyMongo كمشغل Python الرسمي لـ MongoDB، مما يوفر تكاملًا كاملاً بين تطبيقات Python و MongoDB.
ما هو PyMongo
PyMongo هي مكتبة Python الرسمية للتفاعل مع MongoDB. إنه مشغل عالي الأداء يوفر وصولًا مباشرًا إلى جميع إمكانيات MongoDB، بما في ذلك الميزات الحديثة مثل المعاملات، وتدفقات التغيير، والمجموعات المؤقتة.
الميزات الرئيسية لـ PyMongo
التوافق ودعم الإصدارات
- دعم إصدارات MongoDB 3.6 و 4.0 و 4.2 و 4.4 و 5.0 و 6.0 و 7.0
- متوافق مع Python 3.7+
- تحديثات منتظمة وتصحيحات أمنية
الإمكانيات الوظيفية
- دعم كامل لتنسيق BSON (Binary JSON)
- دعم مدمج لـ GridFS لتخزين الملفات الكبيرة
- إعادة الاتصال التلقائي عند حدوث أعطال
- دعم تشفير SSL/TLS
- مراقبة الأداء وتحليل الأداء
المزايا المعمارية
- عمليات آمنة للخيوط (Thread-safe)
- مجموعات اتصال (Connection Pools)
- اكتشاف تلقائي لطوبولوجيا الكتلة
- دعم النسخ المتماثلة والتقسيم (Sharding)
تثبيت وإعداد PyMongo
التثبيت الأساسي
pip install pymongo
التثبيت مع إمكانيات إضافية
# للعمل مع التشفير
pip install pymongo[encryption]
# للعمل مع Kerberos
pip install pymongo[gssapi]
# للعمل غير المتزامن
pip install motor
التحقق من التثبيت
import pymongo
print(pymongo.version)
الاتصال بـ MongoDB
طرق الاتصال الأساسية
الاتصال المحلي
from pymongo import MongoClient
# اتصال بسيط
client = MongoClient()
# أو
client = MongoClient('localhost', 27017)
# أو
client = MongoClient('mongodb://localhost:27017/')
الاتصال مع المصادقة
client = MongoClient('mongodb://username:password@localhost:27017/')
الاتصال بـ MongoDB Atlas
client = MongoClient('mongodb+srv://username:password@cluster.mongodb.net/')
الاتصال مع SSL
client = MongoClient('mongodb://localhost:27017/',
ssl=True,
ssl_cert_reqs=ssl.CERT_NONE)
معاملات الاتصال
client = MongoClient(
host='localhost',
port=27017,
maxPoolSize=50,
minPoolSize=10,
maxIdleTimeMS=30000,
connectTimeoutMS=5000,
socketTimeoutMS=5000,
serverSelectionTimeoutMS=5000,
retryWrites=True,
retryReads=True
)
المكونات الأساسية لـ PyMongo
العمل مع قواعد البيانات
# الحصول على قاعدة بيانات
db = client['mydatabase']
# أو
db = client.mydatabase
# قائمة بجميع قواعد البيانات
databases = client.list_database_names()
# حذف قاعدة بيانات
client.drop_database('mydatabase')
# الحصول على إحصائيات قاعدة البيانات
stats = db.command('dbstats')
العمل مع المجموعات
# الحصول على مجموعة
collection = db['mycollection']
# أو
collection = db.mycollection
# إنشاء مجموعة مع خيارات
db.create_collection('m