0Pricing
Python Academy · درس

الاستعلام باستخدام Session

اقرأ البيانات وصفِّها

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

الجلسة

ينفّذ ORM جميع أعماله من خلال Session. فهي تدير وحدة عمل، إذ تتتبع الكائنات الجديدة والمعدّلة والمحذوفة وتتواصل مع قاعدة البيانات.

from sqlalchemy import create_engine
from sqlalchemy.orm import Session
engine = create_engine('sqlite:///:memory:')
with Session(engine) as session:
    print('Session open:', session)

إضافة الكائنات

تُجهّز session.add() كائنًا جديدًا. ولا تُرسل أي بيانات إلى قاعدة البيانات حتى تنفّذ commit().

from sqlalchemy.orm import Session
# session.add(user) stages it
# session.commit() writes it
print('add stages, commit saves')

تثبيت التغييرات

تفرّغ session.commit() التغييرات المعلّقة وتثبّت المعاملة، مما يجعلها دائمة.

# with Session(engine) as session:
#     session.add(User(name='Alice'))
#     session.commit()
print('commit persists the work')

الاستعلام باستخدام select()

تقرأ SQLAlchemy الحديثة البيانات باستخدام select() الذي يُنفّذ من خلال الجلسة. وتُرجع scalars() مثيلات النماذج.

from sqlalchemy import select
# stmt = select(User)
# users = session.scalars(stmt).all()
print('select(User) then scalars().all()')

الحصول على جميع الصفوف

تُرجع session.scalars(select(User)).all() قائمةً تضم كل كائنات User الموجودة في الجدول.

from sqlalchemy import select
# all_users = session.scalars(select(User)).all()
# for u in all_users:
#     print(u.name)
print('all() returns a list of objects')

التصفية باستخدام where()

أضف عبارة where() لإجراء التصفية. وقارن عمودًا مرتبطًا بقاعدة البيانات باستخدام عامل Python عادي.

from sqlalchemy import select
# stmt = select(User).where(User.age > 28)
# adults = session.scalars(stmt).all()
print('where(User.age > 28) filters rows')

الحصول على كائن واحد

تُرجع session.scalars(stmt).first() أول نتيجة مطابقة أو None. أما one() فتتوقع صفًا واحدًا بالضبط وتطلق استثناءً خلاف ذلك.

from sqlalchemy import select
# stmt = select(User).where(User.name == 'Alice')
# user = session.scalars(stmt).first()
print('first() = first match or None')

البحث باستخدام المفتاح الأساسي

تُعدّ session.get(User, 1) أسرع طريقة لجلب كائن واحد باستخدام مفتاحه الأساسي.

# user = session.get(User, 1)
# print(user.name)
print('session.get(Model, pk) fetches by id')

ترتيب النتائج

استخدم order_by() بالتسلسل لترتيب النتائج. واستخدم .desc() مع عمود للترتيب التنازلي.

from sqlalchemy import select
# stmt = select(User).order_by(User.age.desc())
# sorted_users = session.scalars(stmt).all()
print('order_by(User.age.desc()) sorts results')

تحديث كائن

غيّر إحدى سمات كائن محمّل، ثم نفّذ commit(). تكتشف الجلسة التغيير وتصدر أمر UPDATE.

# user = session.get(User, 1)
# user.name = 'Alicia'
# session.commit()  # auto UPDATE
print('Edit attribute, then commit')

حذف كائن

تضع session.delete(obj) علامة على الكائن ليُحذف. ويُنفّذ DELETE عند عملية التثبيت التالية.

# user = session.get(User, 1)
# session.delete(user)
# session.commit()  # row removed
print('delete(obj) then commit removes the row')

اختبار سريع

اختبر معرفتك بالجلسة.

مراجعة

تعلّمت قراءة البيانات وتغييرها من خلال Session.

  • تتتبع Session وحدة عملك
  • تُجهّز add() التغييرات، بينما يحفظها commit()
  • تقرأ select() مع scalars() الكائنات، وتُجري where() التصفية
  • تجلب session.get() الكائنات باستخدام المفتاح الأساسي، وتُطبّق التعديلات وdelete() عند التثبيت

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

هل درس «الاستعلام باستخدام Session» مجاني؟

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

ماذا ستتعلم في «الاستعلام باستخدام Session»؟

اقرأ البيانات وصفِّها تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «الاستعلام باستخدام Session»؟

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

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

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

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

  1. SQLAlchemy Core مقابل ORM
  2. تعريف النماذج
  3. الاستعلام باستخدام Session
  4. العلاقات وعمليات الربط
← العودة إلى Python Academy