أساسيات ربط قواعد البيانات في Python
العمل مع قواعد البيانات هو جزء أساسي من أي تطبيق حديث. تخزين البيانات واسترجاعها وإدارتها يتيح لك بناء تطبيقات متكاملة، سواء كانت نصوصًا برمجية بسيطة أو خدمات ويب معقدة.
في Python، توجد طرق متعددة للتعامل مع قواعد البيانات. في هذا المقال، سنشرح بالتفصيل كيفية ربط قاعدة بيانات باستخدام وحدة sqlite3. كما سنتناول استخدام تنسيق JSON لحفظ البيانات باستخدام json.dump. وسنستعرض الجوانب الرئيسية للعمل بهذه التقنيات.
لماذا تحتاج إلى قواعد البيانات في مشاريعك؟
إذا كانت برامجك تعالج بيانات تحتاج إلى الحفظ بين جلسات التشغيل، فلا غنى عن قاعدة بيانات. توفر قاعدة بيانات Python sqlite3 حلاً موثوقًا لتخزين المعلومات.
مزايا استخدام قواعد البيانات
استخدام قواعد البيانات في مشاريع Python يمنحك المزايا التالية:
• تخزين مريح للبيانات المنظمة • وصول سريع وتصفية المعلومات • إدارة مركزية للبيانات • ضمان سلامة البيانات • إمكانية إنشاء نسخ احتياطية • قابلية التوسع
العمل مع قاعدة بيانات SQLite في Python
قاعدة بيانات SQLite هي الخيار الأمثل للمشاريع الصغيرة. فهي مدمجة مباشرة في التطبيق، ولا تتطلب خادمًا منفصلاً، وتعمل مع ملفات بصيغة .db.
الاتصال بقاعدة بيانات SQLite
وحدة sqlite3 مضمنة في المكتبة القياسية لـ Python، مما يعني عدم الحاجة إلى تثبيت إضافي.
import sqlite3
# الاتصال بقاعدة البيانات (إذا لم يكن الملف موجودًا، سيتم إنشاؤه)
conn = sqlite3.connect('example.db')
# إنشاء مؤشر لتنفيذ استعلامات SQL
cursor = conn.cursor()
عند الاتصال بقاعدة بيانات غير موجودة، يتم إنشاء الملف تلقائيًا، مما يسهل العمل مع المشاريع الجديدة.
إنشاء جدول في قاعدة البيانات
قبل إضافة البيانات، يجب إنشاء هيكل الجدول. نستخدم أمر SQL CREATE TABLE:
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
)
''')
conn.commit()
الأمر IF NOT EXISTS يمنع حدوث أخطاء عند إنشاء الجدول مرة أخرى. PRIMARY KEY AUTOINCREMENT يضمن تعيين معرفات فريدة تلقائيًا.
إضافة البيانات إلى الجدول
لإدراج البيانات، نستخدم أمر INSERT INTO. يُوصى باستخدام الاستعلامات المُعلمة للحماية من هجمات SQL injection:
cursor.execute('''
INSERT INTO users (name, age) VALUES (?, ?)
''', ('Alice', 30))
# إضافة سجلات متعددة في وقت واحد
users_data = [
('Bob', 25),
('Carol', 35),
('David', 40)
]
cursor.executemany('''
INSERT INTO users (name, age) VALUES (?, ?)
''', users_data)
conn.commit()
طريقة executemany تسمح بإضافة العديد من السجلات بكفاءة في عملية واحدة.
قراءة واسترجاع البيانات
لاسترجاع البيانات، نستخدم طرقًا مختلفة حسب عدد السجلات المطلوبة:
# الحصول على جميع السجلات
cursor.execute('SELECT * FROM users')
all_rows = cursor.fetchall()
for row in all_rows:
print(row)
# الحصول على سجل واحد
cursor.execute('SELECT * FROM users WHERE age > ?', (30,))
one_row = cursor.fetchone()
print(one_row)
# الحصول على عدة سجلات
cursor.execute('SELECT name, age FROM users ORDER BY age')
some_rows = cursor.fetchmany(2)
for row in some_rows:
print(f"الاسم: {row[0]}, العمر: {row[1]}")
تحديث وحذف البيانات
تعديل السجلات الموجودة يتم باستخدام أمرَي UPDATE و DELETE: