أساسيات العمل مع SQLite في بايثون
يمثل العمل مع قواعد البيانات جانبًا أساسيًا في أي تطبيق حديث تقريبًا. لكن ليس من الضروري دائمًا استخدام أنظمة إدارة قواعد بيانات معقدة ومكثفة الموارد مثل MySQL أو PostgreSQL. بالنسبة للمشاريع الصغيرة، أو بناء النماذج الأولية، أو تطوير التطبيقات المحلية، يعتبر نظام إدارة قواعد البيانات المدمج في بايثون — SQLite — خيارًا ممتازًا.
في هذا الدليل، سنشرح بالتفصيل مبادئ العمل مع SQLite في بايثون. ستتعلم كيفية تنفيذ العمليات الأساسية على قاعدة البيانات. كما سنستعرض أمثلة عملية لاستخدام أمر UPDATE في SQLite باستخدام بايثون.
ما هو SQLite وما هي مزاياه؟
SQLite هي قاعدة بيانات علائقية مدمجة وخفيفة الوزن. لا تتطلب خادمًا منفصلاً للعمل. يتم تخزين قاعدة بيانات SQLite مباشرة في ملف واحد على قرص الكمبيوتر.
المزايا الرئيسية لـ SQLite:
- مدمجة في المكتبة القياسية لبايثون عبر وحدة sqlite3
- لا تتطلب تثبيت أو إعداد خادم منفصل
- مناسبة تمامًا للتطبيقات المحلية وحلول الأجهزة المحمولة
- سهولة الاستخدام وسرعة عالية في العمل مع كميات صغيرة من البيانات
- تدعم استعلامات SQL القياسية
- متعددة المنصات وقابلة للنقل
- موثوقية واستقرار في العمل
الاتصال بقاعدة بيانات SQLite
للعمل مع SQLite، نستخدم الوحدة القياسية sqlite3. لا حاجة لتثبيتها بشكل إضافي، فهي مضمنة بالفعل في التوزيعة القياسية لبايثون.
import sqlite3
# إنشاء أو الاتصال بقاعدة بيانات
conn = sqlite3.connect('example.db')
# إنشاء مؤشر لتنفيذ استعلامات SQL
cursor = conn.cursor()
عند تنفيذ هذا الكود، يتم إنشاء ملف قاعدة البيانات example.db في المجلد الحالي. إذا كان الملف موجودًا بالفعل، فسيتم الاتصال بقاعدة البيانات الموجودة.
إنشاء هيكل قاعدة البيانات
إنشاء الجداول
يتم إنشاء جدول في SQLite باستخدام الأمر CREATE TABLE. لنلقِ نظرة على مثال لإنشاء جدول لتخزين معلومات المستخدمين:
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER,
email TEXT UNIQUE
)
''')
conn.commit()
في هذا المثال، يتم إنشاء جدول users بأربعة أعمدة:
- id — معرف فريد مع زيادة تلقائية
- name — اسم المستخدم (حقل إلزامي)
- age — عمر المستخدم
- email — البريد الإلكتروني (قيمة فريدة)
إنشاء الفهارس لتحسين الأداء
لتحسين أداء الاستعلامات، يمكن إنشاء فهارس:
cursor.execute('''
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email)
''')
cursor.execute('''
CREATE INDEX IF NOT EXISTS idx_users_age ON users(age)
''')
conn.commit()
العمليات على البيانات
إضافة البيانات إلى الجدول
يتم إدراج سجل واحد في الجدول باستخدام الأمر INSERT:
cursor.execute('''
INSERT INTO users (name, age, email)
VALUES (?, ?, ?)
''', ('Alice', 30, 'alice@example.com'))
conn.commit()
إضافة البيانات بشكل جماعي
لإضافة عدة سجلات في وقت واحد، نستخدم طريقة executemany:
users_data = [
('Bob', 25, 'bob@example.com'),
('Charlie', 35, 'charlie@example.com'),
('Diana', 28, 'diana@example.com'),
('Eve', 32, 'eve@example.com')
]
cursor.executemany('''
INSERT INTO users (name, age, email)
VALUES (?, ?, ?)
''', users_data)
conn.commit()