Dataset: التعامل مع قواعد البيانات بأسلوب Pandas

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مكتبة Dataset Python: التعامل مع قواعد البيانات بأسلوب Pandas

ما هي مكتبة Dataset

Dataset — هي مكتبة Python توفر واجهة سهلة للتعامل مع قواعد البيانات SQL دون الحاجة لكتابة استعلامات SQL. تتيح لك العمل مع قواعد البيانات ببساطة كما تتعامل مع القواميس في Python، مع إنشاء الجداول تلقائياً وإدارة هيكل البيانات.

المزايا الرئيسية لمكتبة Dataset:

  • إنشاء تلقائي للجداول والهياكل
  • واجهة برمجية بسيطة بدون استعلامات SQL
  • دعم العديد من أنظمة قواعد البيانات عبر SQLAlchemy
  • صيغة بديهية وسهلة الفهم
  • إعدادات بسيطة وأقل تكوين
  • توافق ممتاز مع مكتبة Pandas

تثبيت وإعداد Dataset

تثبيت المكتبة

pip install dataset

قد تحتاج إلى برامج تشغيل إضافية للتعامل مع قواعد بيانات محددة:

# لقواعد بيانات PostgreSQL
pip install psycopg2-binary

# لقواعد بيانات MySQL
pip install pymysql

# برنامج تشغيل SQLite مدمج بالفعل في Python

الاتصال بقواعد بيانات مختلفة

import dataset

# SQLite (قاعدة بيانات محلية)
db = dataset.connect('sqlite:///mydatabase.db')

# PostgreSQL
db = dataset.connect('postgresql://user:password@localhost:5432/dbname')

# MySQL
db = dataset.connect('mysql://user:password@localhost/dbname')

# في الذاكرة (للاختبار)
db = dataset.connect('sqlite:///:memory:')

المبادئ الأساسية لعمل Dataset

يعمل Dataset وفق المبادئ التالية:

  1. إنشاء تلقائي للجداول — يتم إنشاء الجداول عند أول استخدام
  2. هيكل ديناميكي — يتشكل هيكل الجدول تلقائياً عند إدراج البيانات
  3. واجهة القواميس — يتم تمثيل البيانات كقواميس Python
  4. بدون SQL — جميع العمليات تتم عبر دوال Python

إنشاء وإدارة الجداول

الحصول على جدول

# الحصول على جدول (يتم إنشاؤه تلقائياً إذا لم يكن موجوداً)
users_table = db['users']

# طريقة بديلة
users_table = db.get_table('users')

إنشاء جدول بإعدادات مخصصة

# إنشاء جدول بمفتاح أساسي مخصص
db.create_table('products', primary_id='product_id', primary_type=db.types.string)

إدراج البيانات

إدراج سجل واحد

table = db['users']

# إدراج مستخدم واحد
table.insert({
    'name': 'أحمد محمد',
    'email': 'ahmed@example.com',
    'age': 30,
    'city': 'القاهرة'
})

إدراج جماعي

# إدراج عدة سجلات
users_data = [
    {'name': 'سارة علي', 'email': 'sara@example.com', 'age': 25},
    {'name': 'خالد عمر', 'email': 'khaled@example.com', 'age': 35},
    {'name': 'مريم حسن', 'email': 'mariam@example.com', 'age': 28}
]

table.insert_many(users_data)

عمليات Upsert

# إدراج أو تحديث (إذا كان السجل بنفس البريد الإلكتروني موجوداً بالفعل)
table.upsert({
    'name': 'أحمد محمد',
    'email': 'ahmed@example.com',
    'age': 31,
    'city': 'الإسكندرية'
}, ['email'])

البحث وتصفية البيانات

الحصول على جميع السجلات

# الحصول على جميع السجلات
all_users = list(table.all())
for user in all_users:
    print(f"{user['name']} - {user['email']}")

البحث بشروط

# البحث عن سجل واحد
user = table.find_one(name='أحمد محمد')

# البحث عن جميع السجلات بشرط
young_users = list(table.find(age={'<': 30}))                    

توصيات