استكشاف SQLAlchemy: إدارة بيانات قاعدة البيانات بسهولة مع Python
في إطار العمل مع قواعد البيانات باستخدام SQLAlchemy، تبرز أهمية فهم كيفية تنظيم السجلات، وكذلك الطرق المتاحة للتحكم في عدد السجلات واسترجاعها بشكل عشوائي. يعتبر SQLAlchemy إطار عمل قويًا يُستخدم لربط تطبيقات Python بقواعد البيانات، ويتيح للمطورين التفاعل مع البيانات بشكل بسيط وفعّال.
أولاً وقبل البدء في التحدث عن ترتيب السجلات، يجب أن نتناول مفهوم الجداول. في SQLAlchemy، يتم تمثيل الجداول باستخدام كائنات Table
، والتي تحدد البنية الأساسية للجداول في قاعدة البيانات. يمكننا تعريف الجداول باستخدام MetaData
وتحديدها بمعلومات مثل اسم الجدول وأعمدته وأنواع البيانات.
-
اختيار بين enum و static const في ميزة النوع07/04/2024
-
تحديات دمج إضافات Cordova مع IBM MFP15/04/2024
-
تسجيل الأحداث في تطبيق Flask04/04/2024
-
استخدام Else في البرمجة: التحقق من الضرورة04/02/2024
pythonfrom sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
# تعريف محرك قاعدة البيانات والميتاداتا
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
# تعريف جدول الطلبات
orders = Table('orders', metadata,
Column('id', Integer, primary_key=True),
Column('customer_name', String),
Column('total_amount', Integer)
)
# إنشاء الجدول في قاعدة البيانات
metadata.create_all(engine)
الآن، بمجرد أن لدينا هيكل الجدول، يمكننا بسهولة إضافة سجلات باستخدام عمليات الإدراج (INSERT
). لكن كيف يمكننا تحديد ترتيب السجلات أو الحد من عددها؟ يُستخدم في ذلك استعلامات SQLAlchemy.
pythonfrom sqlalchemy import select
# إدراج سجلات
engine.execute(orders.insert(), [
{'customer_name': 'John Doe', 'total_amount': 100},
{'customer_name': 'Jane Smith', 'total_amount': 150},
# يمكنك إضافة المزيد من السجلات هنا
])
# استعلام لاسترجاع السجلات بترتيب محدد
select_query = select([orders]).order_by(orders.c.total_amount)
result = engine.execute(select_query)
for row in result:
print(row)
تحديد عدد السجلات يتم بسهولة باستخدام الكلمة الرئيسية limit
. على سبيل المثال، إذا أردنا الحصول على أول اثنين من السجلات:
pythonselect_query = select([orders]).limit(2)
result = engine.execute(select_query)
for row in result:
print(row)
أما بالنسبة لاسترجاع السجلات بشكل عشوائي، يمكننا استخدام دالة func.random()
(يرجى مراجعة الوثائق الخاصة بالقاعدة بيانات التي تستخدمها لضمان دعم هذه الوظيفة):
pythonfrom sqlalchemy.sql.expression import func
select_query = select([orders]).order_by(func.random()).limit(2)
result = engine.execute(select_query)
for row in result:
print(row)
تحقيق توازن بين ترتيب السجلات والحصول على عدد معين واسترجاع سجلات بشكل عشوائي يُظهر القوة والمرونة التي يقدمها SQLAlchemy في التعامل مع البيانات. من خلال هذه الإمكانيات، يمكن للمطورين تحقيق أداء فعّال وتلبية احتياجات التطبيقات المتعددة.
المزيد من المعلومات
بالطبع، سنوسع في المزيد من المعلومات حول SQLAlchemy وكيفية التحكم في البيانات بشكل أفضل، بدايةً من إضافة السجلات وصولاً إلى التعامل مع العلاقات بين الجداول.
إضافة سجلات بشكل دينامي
عند إدراج سجلات جديدة، يمكن استخدام العمليات insert
لتنفيذ هذه العملية. يمكنك أيضًا استخدام values
لإدراج سجلات محددة بشكل أسهل:
python# إدراج سجل جديد باستخدام insert
engine.execute(orders.insert(), {'customer_name': 'Alice', 'total_amount': 200})
# إدراج عدة سجلات باستخدام values
engine.execute(orders.insert().values([
{'customer_name': 'Bob', 'total_amount': 120},
{'customer_name': 'Eve', 'total_amount': 180}
]))
تحديث السجلات
لتحديث بيانات السجلات، يمكن استخدام عمليات update
. على سبيل المثال، إذا أردت تحديث مبلغ إجمالي الطلب لعميل معين:
python# تحديث مبلغ الطلب لعميل محدد
update_query = orders.update().where(orders.c.customer_name == 'Alice').values(total_amount=250)
engine.execute(update_query)
حذف السجلات
لحذف سجلات، يمكن استخدام عمليات delete
. في هذا المثال، سنقوم بحذف جميع السجلات التي تحمل اسم “Bob”:
python# حذف السجلات حسب الشرط
delete_query = orders.delete().where(orders.c.customer_name == 'Bob')
engine.execute(delete_query)
التعامل مع العلاقات بين الجداول
في بنية قاعدة البيانات، قد تحتاج إلى التعامل مع علاقات بين الجداول. يمكن تحديد العلاقات باستخدام كائنات ForeignKey
. على سبيل المثال، إذا كنت تريد إضافة جدول جديد لتخزين تفاصيل العناوين لكل عميل:
pythonaddresses = Table('addresses', metadata,
Column('id', Integer, primary_key=True),
Column('customer_id', Integer, ForeignKey('orders.id')),
Column('address', String)
)
# إنشاء الجدول في قاعدة البيانات
metadata.create_all(engine)
في هذا المثال، قمنا بإضافة جدول addresses
وربطه بجدول orders
باستخدام ForeignKey
. هذا يعني أن كل عنوان يرتبط بسجل في جدول orders
عبر مفتاح أساسي خارجي.
هذه النقاط تمثل لمحة سريعة عن بعض الأساسيات في SQLAlchemy، والإطار يوفر ميزات إضافية وقوية لتسهيل التعامل مع قواعد البيانات بشكل متقدم. باستكشاف الوثائق الرسمية لـ SQLAlchemy، يمكنك اكتساب فهم أعمق حول مواضيع مثل التراجع عن التغييرات، واستخدام العمليات الجماعية، والتعامل مع مفاتيح خارجية والعديد من المفاهيم الأخرى المتقدمة.