كيف يعمل SQLite في بايثون؟ دليل شامل

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

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

ابدأ الدورة

العمل مع SQLite في بايثون: دليل شامل للمبتدئين والمطورين المحترفين

يُعد التعامل مع قواعد البيانات من أهم المهام عند تطوير التطبيقات. إذا كنت بحاجة إلى حل خفيف ومدمج دون الحاجة إلى تثبيت خوادم منفصلة، فإن SQLite هو الخيار الأمثل لك.

بفضل الوحدة القياسية sqlite3 في بايثون، يمكنك بسرعة إنشاء قواعد البيانات وتعديلها وإدارتها مباشرة من الكود. في هذا المقال، ستتعلم كيفية الاتصال بـ SQLite، وإجراء عمليات إدراج البيانات (INSERT)، والتحديث (UPDATE)، وغيرها الكثير.

ما هو SQLite ولماذا يختاره المطورون؟

SQLite هي قاعدة بيانات علائقية مدمجة تخزن جميع المعلومات في ملف واحد. لا تحتاج إلى خادم منفصل، وهي مثالية للنماذج الأولية والمشاريع الصغيرة وتطبيقات الهواتف المحمولة.

تُستخدم SQLite على نطاق واسع في مجالات تطوير البرمجيات المختلفة. العديد من التطبيقات الشهيرة، بما في ذلك المتصفحات وتطبيقات المراسلة وتطبيقات الهواتف، تستخدم SQLite لتخزين البيانات محليًا.

مزايا SQLite

  • لا يتطلب تثبيت خادم
  • سرعة أداء عالية
  • سهولة في الاستخدام
  • تكامل ممتاز مع بايثون عبر وحدة sqlite3
  • متعدد المنصات وقابل للنقل
  • دعم معاملات ACID
  • استهلاك ضئيل للموارد

قيود SQLite

  • لا يدعم الكتابة المتزامنة من عدة مستخدمين
  • أداء محدود مع كميات كبيرة من البيانات
  • عدم وجود نسخ متماثل مدمج
  • إمكانيات محدودة للتطبيقات المعقدة متعددة المستخدمين

الاتصال بقاعدة بيانات SQLite في بايثون

الاتصال الأساسي

import sqlite3

# الاتصال بقاعدة البيانات (إذا لم يكن الملف موجودًا، سيتم إنشاؤه)
conn = sqlite3.connect('my_database.db')

# إنشاء مؤشر لتنفيذ استعلامات SQL
cursor = conn.cursor()

الاتصال بقاعدة بيانات في الذاكرة

للتخزين المؤقت للبيانات أو الاختبار، يمكنك استخدام قاعدة بيانات في الذاكرة:

conn = sqlite3.connect(':memory:')

إعدادات الاتصال المتقدمة

conn = sqlite3.connect('my_database.db', timeout=10)
conn.execute('PRAGMA foreign_keys = ON')  # تفعيل المفاتيح الخارجية

إنشاء جدول في SQLite

إنشاء جدول بسيط

cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER
    )
''')
conn.commit()

إنشاء جدول مع قيود إضافية

cursor.execute('''
    CREATE TABLE IF NOT EXISTS products (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL UNIQUE,
        price REAL CHECK(price > 0),
        category TEXT DEFAULT 'غير مصنف',
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )
''')
conn.commit()

إنشاء فهارس لتحسين الأداء

cursor.execute('''
    CREATE INDEX IF NOT EXISTS idx_users_name ON users(name)
''')
conn.commit()

إدراج البيانات في الجدول - python sqlite3 insert

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

من أكثر الاستعلامات شيوعًا هو كيفية إدراج البيانات في جدول SQLite:

cursor.execute('''
    INSERT INTO users (name, age) VALUES (?, ?)
''', ('أحمد', 30))
conn.commit()

استخدام علامات الاستفهام يحمي من هجمات حقن SQL (SQL Injection) وهو الأسلوب الموصى به.

إدراج بيانات متعددة

users = [('أحمد', 25), ('سارة', 28), ('خالد', 35)]
cursor.executemany('''
    INSERT INTO users (name, age) VALUES (?, ?)
''', users)
conn.commit()

استعلام SELECT في SQLite مع بايثون

جلب جميع البيانات

cursor.execute('SELECT * FROM users')
rows = cursor.fetchall()
for row in rows:
    print(row)

جلب بيانات بشروط محددة

cursor.execute('SELECT * FROM users WHERE age > ?', (25,))
rows = cursor.fetchall()

استخدام ORDER BY و LIMIT

cursor.execute('SELECT * FROM users ORDER BY age DESC LIMIT 5')
rows = cursor.fetchall()

تحديث البيانات - UPDATE في SQLite

cursor.execute('''
    UPDATE users SET age = ? WHERE name = ?
''', (31, 'أحمد'))
conn.commit()

حذف البيانات - DELETE في SQLite

cursor.execute('''
    DELETE FROM users WHERE age < ?
''', (18,))
conn.commit()

إغلاق الاتصال بقاعدة البيانات

conn.close()

تذكر دائمًا إغلاق الاتصال بعد الانتهاء من العمل لتجنب تسرب الموارد.

المدونات

توصيات الكتب