0Pricing
Learn AI with Python · درس

SQLite مع وحدة sqlite3 في Python

إنشاء قواعد البيانات والجداول، وINSERT/SELECT/UPDATE، والاستعلامات المعلَّمة، وإدارة الاتصالات.

SQLite مع وحدة sqlite3 في Python درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

لماذا نستخدم قواعد البيانات في الذكاء الاصطناعي؟

تظل الملفات المسطّحة مناسبة إلى أن تكبر بياناتكم أو تحتاج أجزاء متعددة من المشروع إلى السجلات نفسها. تمنحكم قاعدة البيانات استعلامات سريعة، ومخططات منظّمة، ووصولًا متزامنًا آمنًا.

إن SQLite قاعدة بيانات قائمة على الملفات ولا تتطلب إعدادًا، وهي مضمّنة في Python عبر الوحدة sqlite3 — ما يجعلها مثالية لتجارب الذكاء الاصطناعي والمشروعات الصغيرة.

الاتصال باستخدام sqlite3.connect

تفتح sqlite3.connect ملف قاعدة بيانات أو تنشئه، وتعيد اتصالًا. استخدموا :memory: لإنشاء قاعدة بيانات مؤقتة في الذاكرة.

import sqlite3

conn = sqlite3.connect("ml.db")   # creates ml.db if missing
print(conn)

المؤشرات و cursor.execute

تُشغّلون SQL من خلال مؤشر تحصلون عليه من الاتصال. يرسل cursor.execute(sql) عبارةً إلى قاعدة البيانات.

import sqlite3

conn = sqlite3.connect("ml.db")
cur = conn.cursor()
cur.execute("SELECT sqlite_version()")
print(cur.fetchone())

CREATE TABLE IF NOT EXISTS

عرّفوا جدولًا باستخدام مخطط. تجعل IF NOT EXISTS العبارة آمنة للتشغيل بشكل متكرر — فلن تُصدر خطأً إذا كان الجدول موجودًا مسبقًا.

cur.execute("""
CREATE TABLE IF NOT EXISTS experiments (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    accuracy REAL,
    created_at TEXT
)
""")

INSERT باستخدام العناصر النائبة

لا تبنوا SQL باستخدام تنسيق السلاسل النصية — فهذا يسهّل حقن SQL ويتسبب في مشكلات مع علامات الاقتباس. استخدموا العناصر النائبة ? ومرّروا القيم على هيئة صف.

cur.execute(
    "INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
    ("baseline", 0.82, "2026-05-29"),
)

إدراج صفوف متعددة باستخدام executemany

تُدرج executemany قائمةً من الصفوف في استدعاء واحد فعّال — وهي أسرع بكثير من تكرار execute.

rows = [
    ("rf", 0.88, "2026-05-29"),
    ("xgb", 0.91, "2026-05-29"),
]
cur.executemany(
    "INSERT INTO experiments (name, accuracy, created_at) VALUES (?, ?, ?)",
    rows,
)

يحفظ conn.commit() التغييرات

تحدث عمليات الكتابة داخل معاملة، ولا تُحفظ بشكل دائم حتى تستدعوا conn.commit(). يُعد نسيان ذلك أكثر أخطاء المبتدئين شيوعًا — إذ تختفي بياناتكم بصمت عند الإغلاق.

conn.commit()   # persist all pending INSERT/UPDATE/DELETE

الاستعلام باستخدام fetchall و fetchone

بعد تنفيذ SELECT، استرجعوا النتائج:

  • fetchone() — الصف المفرد التالي
  • fetchall() — جميع الصفوف المتبقية في قائمة من الصفوف
  • كرّروا مباشرةً على المؤشر عند التعامل مع نتائج كبيرة
cur.execute("SELECT name, accuracy FROM experiments")
for row in cur.fetchall():
    print(row)   # ("baseline", 0.82) ...

التصفية والترتيب

تتولى SQL العمل الشاق: صفّوا باستخدام WHERE، ورتّبوا باستخدام ORDER BY، وحدّدوا العدد باستخدام LIMIT. استخدموا العناصر النائبة لقيم الاستعلام أيضًا.

cur.execute(
    "SELECT name, accuracy FROM experiments WHERE accuracy > ? ORDER BY accuracy DESC LIMIT 3",
    (0.85,),
)
print(cur.fetchall())

مصنع الصفوف للوصول بالاسم

تكون الصفوف، افتراضيًا، على هيئة صفوف. اضبطوا conn.row_factory = sqlite3.Row للوصول إلى الأعمدة بالاسم، وهو أوضح بكثير.

import sqlite3

conn = sqlite3.connect("ml.db")
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("SELECT * FROM experiments")
row = cur.fetchone()
print(row["name"], row["accuracy"])

مديرو السياق للأمان

يؤدي استخدام with مع الاتصال إلى تنفيذ الحفظ تلقائيًا عند النجاح والتراجع عند حدوث خطأ. وبدمجه مع closing، يضمن ذلك التنظيف.

import sqlite3
from contextlib import closing

with closing(sqlite3.connect("ml.db")) as conn:
    with conn:   # auto commit/rollback
        conn.execute(
            "INSERT INTO experiments (name, accuracy) VALUES (?, ?)",
            ("svm", 0.79),
        )

اختبار سريع: حفظ عمليات الكتابة

شغّلتم عدة عبارات INSERT، ثم أغلقتم الاتصال — لكن البيانات اختفت في المرة التالية.

مراجعة: SQLite باستخدام sqlite3

يمكنكم الآن استخدام قاعدة بيانات فعلية من Python:

  • sqlite3.connect وcursor
  • CREATE TABLE IF NOT EXISTS لإنشاء مخططات آمنة
  • INSERT مع العناصر النائبة ? وexecutemany
  • conn.commit() لحفظ عمليات الكتابة بشكل دائم
  • fetchone/fetchall وWHERE/ORDER BY/LIMIT
  • sqlite3.Row ومديرو السياق لإنشاء تعليمات برمجية نظيفة وآمنة

التالي: الربط بين pandas وSQL.

الأسئلة الشائعة

هل درس «SQLite مع وحدة sqlite3 في Python» مجاني؟

نعم — نص درس «SQLite مع وحدة sqlite3 في Python» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «SQLite مع وحدة sqlite3 في Python»؟

إنشاء قواعد البيانات والجداول، وINSERT/SELECT/UPDATE، والاستعلامات المعلَّمة، وإدارة الاتصالات. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «SQLite مع وحدة sqlite3 في Python»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. SQLite مع وحدة sqlite3 في Python
  2. تكامل Pandas وSQL
  3. تخزين نتائج ML والاستعلام عنها
  4. مقدمة إلى قواعد البيانات المتجهية
← العودة إلى Learn AI with Python