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وcursorCREATE TABLE IF NOT EXISTSلإنشاء مخططات آمنةINSERTمع العناصر النائبة?وexecutemanyconn.commit()لحفظ عمليات الكتابة بشكل دائمfetchone/fetchallوWHERE/ORDER BY/LIMITsqlite3.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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- SQLite مع وحدة sqlite3 في Python
- تكامل Pandas وSQL
- تخزين نتائج ML والاستعلام عنها
- مقدمة إلى قواعد البيانات المتجهية