نسخة تجريبية من المنقذ: الاشتراك المدفوع والمساعد الذكي لم يُفعَّلا بعد، والمحتوى متاح للتجربة.

الوحدة 1: الوحدة الأولى: قواعد البيانات SQLite في Python

الدرس 2إنشاء قواعد البيانات Creating a Database

من كتاب الطالبتقنية المعلومات 11 — الصف الحادي عشر — الفصل الدراسي الأول · من صفحة 33

أهداف الدرس

  • أعرّف مفهوم SQLite وأبيّن أهميتها ومزاياها ضمن بيئة Python.
  • أشرح خطوات إنشاء قاعدة بيانات والاتصال بها باستخدام دالة connect.
  • أطبّق إنشاء قاعدة بيانات جديدة باستخدام لغة Python ضمن بيئة تطوير متكاملة (IDE) مثل PyCharm.
  • أكتب تعليمات برمجية تشمل التعامل مع الاستثناءات عبر try / except / finally.
  • أدرك أهمية إغلاق اتصال قاعدة البيانات من أجل ضمان تكامل البيانات وسلامتها ومنع فقدانها.

الشرح خطوة بخطوة

1 / 190:00

الموضع محفوظ على هذا الجهاز.

المقطع 1 من 6إنشاء قواعد البيانات Creating a Database0:33

لا يوجد صوت عربي على هذا الجهاز. الشرح الصوتي المسجّل سيتوفر لهذا الدرس قريبًا

مقاطع الدرس

0 من 6 مكتمل

إنشاء قواعد البيانات Creating a Database35)

تُستخدم قواعد البيانات لتخزين البيانات وتنظيمها ومعالجتها. وتُعد SQLite إحدى قواعد البيانات التي يُمكن إنشاؤها والتعامل معها بسهولة في لغة Python من خلال المكتبة القياسية sqlite3، دون الحاجة إلى خادم خارجي (Server).35)

صيغة التعليمة البرمجية للاتصال بقاعدة البيانات SQLite في Python35)

  1. هذه هي صيغة التعليمة البرمجية للاتصال بقاعدة البيانات كما رسمها الكتاب في شكل رقم (2-1).connection = sqlite3.connect('database_name.db')
  2. الجزء الأول كائن (مُتغير) الاتصال بقاعدة البيانات، ويُسمى في الكتاب Database Connection Object.connection
  3. الجزء الثاني مكتبة قواعد البيانات.sqlite3
  4. الجزء الثالث دالة من مكتبة sqlite3 لإنشاء أو فتح اتصال بقاعدة البيانات.connect
  5. الجزء الرابع اسم قاعدة البيانات مكتوبًا بين علامتي تنصيص.'database_name.db'

إنشاء قاعدة البيانات SQLite في Python35)

  1. يتم إنشاء قاعدة بيانات جديدة باستخدام إحدى بيئات التطوير المتكاملة، ومنها PyCharm، من خلال مجموعة من الخطوات الأساسية التالية:IDE (PyCharm)
  2. الخطوة الأولى: كتابة التعليمات البرمجية، وهي ثلاث تعليمات بالترتيب.
  3. استدعاء مكتبة قواعد البيانات.sqlite3
  4. إنشاء اتصال بقاعدة البيانات.
  5. إغلاق الاتصال بقاعدة البيانات.
  6. الخطوة الثانية: تنفيذ التعليمات البرمجية.
  7. الخطوة الثالثة: تأكد من إنشاء ملف قاعدة البيانات بمجلد المشروع.

مثال 1: إنشاء قاعدة البيانات باسم grade11_books.db36)

  1. خطوات التنفيذ ثلاث كما ذكرها الكتاب قبل الكود.
  2. استدعاء مكتبة قواعد البيانات.sqlite3
  3. إنشاء أو فتح اتصال بقاعدة البيانات.
  4. إغلاق الاتصال بقاعدة البيانات.
مثال
  1. السطر الأول: استيراد مكتبة sqlite3 حتى نستطيع استخدام دوالها.

    import sqlite3
  2. السطر الثاني: إنشاء أو فتح اتصال بقاعدة البيانات grade11_books.db، ووضع كائن الاتصال في المتغير connection.

    connection= sqlite3.connect('grade11_books.db')
  3. السطر الثالث: إغلاق الاتصال بقاعدة البيانات.

    connection.close()
36)
انتبه
التفسير كما ورد في الكتاب: import sqlite3 استيراد مكتبة sqlite3. وفي السطر الثاني: sqlite3.connect تُستخدم دالة connect من مكتبة sqlite3 لإنشاء قاعدة البيانات باسم grade11_books.db، وconnection يُمثّل كائن (المتغير) الاتصال النشط بقاعدة البيانات، والذي يُتيح تنفيذ العمليات المختلفة عليها، مثل: إنشاء الجداول، إضافة البيانات، تعديلها، عرضها، وحذفها. وconnection.close() إغلاق الاتصال بقاعدة البيانات.36)

ملاحظات مهمة على إنشاء قاعدة البيانات37)

  1. الملاحظة الأولى: إذا كانت قاعدة البيانات غير موجودة يتم إنشاؤها تلقائيًا.
  2. الملاحظة الثانية: الامتداد الافتراضي لملف قاعدة البيانات من نوع SQLite..db
  3. الملاحظة الثالثة: يجب التأكد من إغلاق الاتصال بقاعدة البيانات بشكل صحيح، للأسباب التالية:
  4. منع تسرب الموارد مثل الذاكرة.
  5. ضمان سلامة البيانات وعدم فقد البيانات.
  6. تجنّب حدوث أخطاء قد تعيق فتح قاعدة البيانات مرة أخرى، نتيجة بقاء الاتصال بها مفتوحًا دون إغلاق.
انتبه
ناتج البرنامج Program Output: في بيئة التطوير المتكاملة PyCharm IDE يظهر ملف قاعدة البيانات grade11_books.db في Project Panel، كما يوضح شكل رقم (2-2). أي أن نجاح البرنامج لا يُعرف برسالة على الشاشة في مثال 1، بل بظهور ملف قاعدة البيانات داخل مجلد المشروع.37)

إنشاء قاعدة البيانات SQLite في Python مع استخدام الاستثناءات38)

استخدام الاستثناءات try / except / finally لمعالجة الأخطاء أثناء التعامل مع قواعد البيانات.38)

  1. استدعاء مكتبة قواعد البيانات.sqlite3
  2. تخصيص القيمة None للمتغير connection.connection = None
  3. إضافة تعليمة try لمعالجة الأخطاء.try:
  4. إنشاء أو فتح اتصال بقاعدة البيانات.
  5. إضافة تعليمة except.except
  6. تنفيذ أوامر محددة في حال حدوث خطأ.
  7. إضافة تعليمة finally.finally
  8. يختبر وجود اتصال بقاعدة البيانات.
  9. تحقق الشرط: يتم إغلاق الاتصال بقاعدة البيانات.
مثال
  1. السطر الأول: استيراد مكتبة sqlite3.

    import sqlite3
  2. السطر الثاني: إنشاء متغير باسم connection وتخصيص القيمة None له، وهي قيمة غير محددة، أي أن المتغير لا يشير حاليًا إلى أي اتصال حالي بقاعدة بيانات.

    connection = None
  3. السطر الثالث: بداية كتلة try التي تحوي الأوامر المحتمَل حدوث خطأ فيها.

    try:
  4. السطر الرابع، داخل try: إنشاء اتصال بقاعدة البيانات grade11_books.db، وإذا نجح الاتصال يتم تعديل قيمة المتغير connection.

    connection = sqlite3.connect('grade11_books.db')
  5. السطر الخامس: طباعة رسالة تؤكد نجاح الاتصال.

    print("Connected to the database successfully.")
  6. السطر السادس: بداية كتلة except التي تعمل إذا حدث خطأ أثناء محاولة الاتصال، ويُخزَّن الخطأ في المتغير e.

    except Exception as e:
  7. السطر السابع: طباعة رسالة تُوضح الخطأ الذي حدث.

    print(f"An unexpected error occurred: {e}")
  8. السطر الثامن: بداية كتلة finally التي تُنفَّذ في جميع الحالات، سواء تم الاتصال بقاعدة البيانات بنجاح أم حدث خطأ أثناء التنفيذ.

    finally:
  9. السطر التاسع: شرط يختبر وجود اتصال بقاعدة البيانات.

    if connection is not None:
  10. السطر العاشر، عند تحقق الشرط: يتم إغلاق قاعدة البيانات.

    connection.close()
  11. السطر الحادي عشر: يطبع رسالة إن الاتصال مغلق.

    print("Database connection is closed.")
38)
  1. استيراد مكتبة sqlite3.import sqlite3
  2. إنشاء متغير باسم connection وتخصيص القيمة None، وهي قيمة غير محددة له، أي أن المتغير لا يشير حاليًا إلى أي اتصال حالي بقاعدة بيانات.connection = None
  3. إنشاء اتصال بقاعدة البيانات، وإذا نجح الاتصال يتم تعديل قيمة المتغير connection ثم طباعة رسالة تؤكد ذلك.try:
  4. إذا حدث خطأ أثناء محاولة الاتصال، يتم طباعة رسالة تُوضح الخطأ، وهو محفوظ في المتغير e.except Exception as e:
  5. في جميع الحالات، سواء تم الاتصال بقاعدة البيانات بنجاح أم حدث خطأ أثناء التنفيذ.finally:
  6. في حال وجود اتصال بقاعدة البيانات. if connection is not None:
  7. يتم إغلاق قاعدة البيانات. connection.close()
  8. يطبع رسالة إن الاتصال مغلق. print("Database connection is closed.")
انتبه
ملاحظة: تم تخصيص قيمة للمتغير connection في بداية التعليمات البرمجية، لضمان تعريف المتغير في جميع الحالات، سواء تم الاتصال بقاعدة البيانات بنجاح أم حدث خطأ أثناء التنفيذ.40)

الملخص

  • SQLite إحدى قواعد البيانات التي يُمكن إنشاؤها والتعامل معها بسهولة في Python من خلال المكتبة القياسية sqlite3 دون الحاجة إلى خادم خارجي Server.
  • صيغة الاتصال: connection = sqlite3.connect('database_name.db')؛ حيث connection كائن الاتصال، وsqlite3 المكتبة، وconnect الدالة، و'database_name.db' اسم قاعدة البيانات.
  • خطوات إنشاء قاعدة بيانات في PyCharm: كتابة التعليمات البرمجية (استدعاء sqlite3، إنشاء الاتصال، إغلاق الاتصال)، ثم تنفيذ التعليمات، ثم التأكد من إنشاء ملف قاعدة البيانات بمجلد المشروع.
  • كود مثال 1 ثلاثة أسطر: import sqlite3 ثم connection= sqlite3.connect('grade11_books.db') ثم connection.close().
  • إذا كانت قاعدة البيانات غير موجودة يتم إنشاؤها تلقائيًا، والامتداد الافتراضي لملف SQLite هو db.
  • أسباب وجوب إغلاق الاتصال: منع تسرب الموارد مثل الذاكرة، وضمان سلامة البيانات وعدم فقدها، وتجنّب أخطاء تعيق فتح قاعدة البيانات مرة أخرى.
  • الاستثناءات try / except / finally تُستخدم لمعالجة الأخطاء أثناء التعامل مع قواعد البيانات: try للمحاولة، وexcept عند حدوث الخطأ، وfinally تُنفَّذ في جميع الحالات.
  • يُخصَّص للمتغير connection القيمة None في البداية لضمان تعريفه في جميع الحالات، ثم يُختبر بـ if connection is not None قبل الإغلاق.

الأفكار الرئيسية

  1. دالة connect لا تفتح قاعدة بيانات موجودة فقط، بل تُنشئها تلقائيًا إن لم تكن موجودة؛ فالإنشاء والفتح أمر واحد في SQLite.
  2. الاتصال مورد يجب إغلاقه: كل قاعدة بيانات تُفتح ولا تُغلق تهدد سلامة البيانات وتُبقي الموارد محجوزة.
  3. بنية try / except / finally تفصل بين ما قد يفشل، وما نفعله عند الفشل، وما يجب أن يحدث في كل الأحوال — ولهذا يوضع الإغلاق داخل finally.

الأسئلة المهمة

ما مزايا SQLite في بيئة Python كما ذكرها الكتاب؟

SQLite إحدى قواعد البيانات التي يُمكن إنشاؤها والتعامل معها بسهولة في لغة Python من خلال المكتبة القياسية sqlite3، دون الحاجة إلى خادم خارجي Server.

الكتاب صفحة 35

اكتب صيغة التعليمة البرمجية للاتصال بقاعدة البيانات، واشرح كل جزء فيها.

الصيغة: connection = sqlite3.connect('database_name.db'). وconnection كائن (مُتغير) الاتصال بقاعدة البيانات Database Connection Object، وsqlite3 مكتبة قواعد البيانات، وconnect دالة من مكتبة sqlite3 لإنشاء / فتح اتصال بقاعدة البيانات، و'database_name.db' اسم قاعدة البيانات.

الكتاب صفحة 35

اذكر خطوات إنشاء قاعدة بيانات جديدة باستخدام بيئة التطوير المتكاملة PyCharm.

أولًا كتابة التعليمات البرمجية: استدعاء مكتبة sqlite3، ثم إنشاء اتصال بقاعدة البيانات، ثم إغلاق الاتصال بقاعدة البيانات. ثانيًا تنفيذ التعليمات البرمجية. ثالثًا التأكد من إنشاء ملف قاعدة البيانات بمجلد المشروع.

الكتاب صفحة 35

علّل: يجب التأكد من إغلاق الاتصال بقاعدة البيانات بشكل صحيح.

لثلاثة أسباب ذكرها الكتاب: منع تسرب الموارد (مثل الذاكرة)، وضمان سلامة البيانات وعدم فقد البيانات، وتجنّب حدوث أخطاء قد تعيق فتح قاعدة البيانات مرة أخرى نتيجة بقاء الاتصال بها مفتوحًا دون إغلاق.

الكتاب صفحة 37

ما وظيفة كل من try وexcept وfinally في مثال 2؟

try تحوي محاولة إنشاء الاتصال بقاعدة البيانات وطباعة رسالة النجاح. وexcept Exception as e تُنفَّذ إذا حدث خطأ أثناء محاولة الاتصال فتطبع رسالة تُوضح الخطأ (المتغير e). وfinally تُنفَّذ في جميع الحالات، سواء تم الاتصال بقاعدة البيانات بنجاح أم حدث خطأ أثناء التنفيذ، وفيها يُختبر وجود الاتصال ثم يُغلق.

الكتاب صفحة 39

لماذا خُصِّصت القيمة None للمتغير connection في بداية التعليمات البرمجية؟

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

الكتاب صفحة 40

كيف نتأكد عمليًا من نجاح تنفيذ مثال 1؟

في بيئة التطوير المتكاملة PyCharm IDE يظهر ملف قاعدة البيانات grade11_books.db في Project Panel، أي داخل مجلد المشروع، كما يوضح شكل رقم (2-2).

الكتاب صفحة 37

ماذا يحدث عند تنفيذ connect باسم قاعدة بيانات غير موجودة؟ وما امتداد ملف SQLite؟

إذا كانت قاعدة البيانات غير موجودة يتم إنشاؤها تلقائيًا، والامتداد الافتراضي لملف قاعدة البيانات من نوع SQLite هو db.

الكتاب صفحة 37

اختبار الدرس

أجب ثم اضغط «صحّح» لترى درجتك وتفسير كل إجابة.

سؤال 1
1

ما المكتبة القياسية التي تُستخدم للتعامل مع SQLite في لغة Python؟

سهل
سؤال 2
2

في التعليمة connection = sqlite3.connect('grade11_books.db')، ماذا يمثل الجزء connection؟

متوسط
سؤال 3
3

أي كتلة من كتل معالجة الأخطاء تُنفَّذ في جميع الحالات سواء نجح الاتصال أم حدث خطأ؟

متوسط
سؤال 4
4

ما الامتداد الافتراضي لملف قاعدة البيانات من نوع SQLite؟

سهل
سؤال 5
5

طالب كتب أمر الاتصال بقاعدة بيانات باسم school.db وهي غير موجودة على جهازه. ماذا يحدث عند التنفيذ؟

متوسط
سؤال 6
6

SQLite تحتاج إلى خادم خارجي Server للعمل مع لغة Python.

سهل
سؤال 7
7

الشرط if connection is not None يختبر وجود اتصال بقاعدة البيانات قبل إغلاقه.

متوسط
سؤال 8
8

أكمل التعليمة الأولى في مثال 1 لاستيراد المكتبة: .......... sqlite3

سهل
سؤال 9
9

اكتب التعليمة التي تُغلق الاتصال بقاعدة البيانات في مثال 1.

سهل
سؤال 10
10

علّل: وُضعت تعليمة connection.close() داخل كتلة finally وليس داخل كتلة try في مثال 2.

صعب

الواجب

أسئلة تطبيقية لتحلها في البيت. يمكنك طباعتها من الأعلى.

سؤال 1
1

اكتب التعليمات البرمجية الثلاث اللازمة لإنشاء قاعدة بيانات باسم school_data.db على غرار مثال 1.

متوسط
سؤال 2
2

طوّر الكود السابق ليشمل معالجة الاستثناءات، مع طباعة رسالة عند النجاح ورسالة عند الخطأ، ورسالة عند الإغلاق.

صعب
سؤال 3
3

زميلك نفّذ برنامجًا لإنشاء قاعدة بيانات ولم يجد ملفها في مجلد المشروع. اذكر خطوتين من خطوات الكتاب تُساعدانه على اكتشاف السبب.

صعب
سؤال 4
4

اذكر الأسباب الثلاثة التي ذكرها الكتاب لوجوب إغلاق الاتصال بقاعدة البيانات بشكل صحيح.

متوسط

مصطلحات الدرس

SQLite
إحدى قواعد البيانات التي يُمكن إنشاؤها والتعامل معها بسهولة في لغة Python دون الحاجة إلى خادم خارجي.
sqlite3
المكتبة القياسية في Python التي تُستخدم للتعامل مع قواعد بيانات SQLite.
connect
دالة من مكتبة sqlite3 لإنشاء / فتح اتصال بقاعدة البيانات.
connection (Database Connection Object)
كائن (مُتغير) الاتصال النشط بقاعدة البيانات، يُتيح تنفيذ العمليات عليها مثل إنشاء الجداول وإضافة البيانات وتعديلها وعرضها وحذفها.
close()
دالة إغلاق الاتصال بقاعدة البيانات.
None
قيمة غير محددة تعني أن المتغير لا يشير حاليًا إلى أي اتصال بقاعدة بيانات.
try / except / finally
الاستثناءات المستخدمة لمعالجة الأخطاء أثناء التعامل مع قواعد البيانات: المحاولة، ثم التعامل مع الخطأ، ثم التنفيذ في جميع الحالات.
IDE (PyCharm)
بيئة تطوير متكاملة تُستخدم لكتابة التعليمات البرمجية وتنفيذها، ويظهر فيها ملف قاعدة البيانات في Project Panel.

تمارين الكتاب كاملة

كل سؤال ونشاط وتمرين ورد في صفحات هذا الدرس، بنصه وإجابته النموذجية. 1 تمرينًا.

ورقة عمل (2) — إنشاء قاعدة بيانات Kuwait_landmarks.db لتوثيق معالم دولة الكويتأنشئ قاعدة بيانات Kuwait_landmarks.db لتوثيق معالم دولة الكويت، باتباع الخطوات التالية: 1. أنشئ مشروعًا جديدًا باسم landmark_database، مستخدمًا بيئة التطوير المناسبة IDE. 2. أنشئ ملف Python جديد باسم data_database.py: استدعِ مكتبة sqlite3، أنشئ اتصالًا بقاعدة البيانات، أغلق الاتصال بقاعدة البيانات. 3. نفّذ التعليمات البرمجية. 4. تأكد من إنشاء ملف قاعدة البيانات بمجلد المشروع. تطوير البرنامج: طوّر البرنامج ليشمل معالجة الاستثناءات.41)

الحل: نُنشئ مشروعًا جديدًا باسم landmark_database في PyCharm، ثم ملف Python باسم data_database.py، ونكتب فيه على نمط مثال 1: import sqlite3 ثم connection= sqlite3.connect('Kuwait_landmarks.db') ثم connection.close(). ثم ننفّذ التعليمات البرمجية، ونتأكد من ظهور ملف Kuwait_landmarks.db في Project Panel بمجلد المشروع (النتيجة المتوقعة: لا تُطبع رسالة، بل يظهر ملف قاعدة البيانات في مجلد المشروع). أما تطوير البرنامج ليشمل معالجة الاستثناءات فيكون على نمط مثال 2: import sqlite3 ثم connection = None ثم try: وداخلها connection = sqlite3.connect('Kuwait_landmarks.db') وprint("Connected to the database successfully.")، ثم except Exception as e: وداخلها print(f"An unexpected error occurred: {e}")، ثم finally: وداخلها if connection is not None: ثم connection.close()، ثم print("Database connection is closed.") داخل finally بعد الشرط. والناتج المتوقع عند النجاح سطران: Connected to the database successfully. ثم Database connection is closed.

صفحات الكتاب

صفحات هذا الدرس من كتاب الطالب الرسمي كما هي، صفحات 33 إلى 42.

المصدر: تقنية المعلومات 11 — الصف الحادي عشر — الفصل الدراسي الأول

  • ص 35: «تُعد SQLite إحدى قواعد البيانات التي يُمكن إنشاؤها والتعامل معها بسهولة في لغة Python»
  • ص 36: «تُستخدم دالة connect من مكتبة sqlite3 لإنشاء قاعدة البيانات باسم grade11_books.db»
  • ص 37: «إذا كانت قاعدة البيانات غير موجودة يتم إنشاؤها تلقائيًا»
  • ص 39: «في جميع الحالات (تم الاتصال بقاعدة البيانات بنجاح أم حدث خطأ أثناء التنفيذ)»
  • ص 40: «لضمان تعريف المتغير في جميع الحالات، سواء تم الاتصال بقاعدة البيانات بنجاح أم حدث خطأ»