SQLAlchemy

SQLAlchemy هي مكتبة بايثون مفتوحة المصدر توفر مجموعة أدوات SQL (تُسمى "SQLAlchemy Core") وأداة ربط الكائنات العلائقية (ORM) للتفاعل مع قواعد البيانات. تُمكّن هذه المكتبة المطورين من العمل مع قواعد البيانات باستخدام كائنات بايثون، مما يتيح الوصول إلى قواعد البيانات بكفاءة ومرونة.
وصف
يُقدّم SQLAlchemy أدوات لإنشاء مخططات قواعد البيانات ، والاستعلام عنها، ورسم خرائط الكائنات العلائقية. تشمل الميزات الرئيسية ما يلي:
- لغة شاملة مضمنة خاصة بالمجال لـ SQL في بايثون تسمى "SQLAlchemy Core" توفر وسائل لإنشاء وتنفيذ استعلامات SQL.
- نظام ORM قوي يسمح بربط فئات بايثون بجداول قواعد البيانات.
- دعم عمليات ترحيل مخططات قواعد البيانات.
- التوافق مع قواعد بيانات خلفية متعددة.
- أدوات لتجميع اتصالات قواعد البيانات وإدارة المعاملات.
تاريخ
صدرت مكتبة SQLAlchemy لأول مرة في فبراير 2006. وقد تطورت لتشمل مجموعة واسعة من الميزات للتفاعل مع قواعد البيانات، واكتسبت شعبية بين مطوري بايثون. ومن أبرز إصداراتها:
- الإصدار 0.1 (2006): [ 5 ] الإصدار الأولي.
- الإصدار 1.0 (2015): [ 6 ] تحسينات كبيرة في ORM ولغة تعبير SQL.
- الإصدار 1.4 (2021): [ 7 ] تقديم واجهة برمجة تطبيقات ORM جديدة .
مثال
يوضح المثال التالي علاقة متعددة الأطراف بين الأفلام ومخرجيها. ويُبين كيفية قيام فئات بايثون المُعرّفة من قِبل المستخدم بإنشاء جداول قواعد بيانات مُطابقة، وكيفية إنشاء مثيلات ذات علاقات من كلا جانبي العلاقة، وأخيرًا كيفية الاستعلام عن البيانات - مع توضيح استعلامات SQL المُولّدة تلقائيًا للتحميل الكسول والتحميل المُسبق.
تعريف المخطط
إنشاء فئتين من فئات بايثون وجداول قاعدة البيانات المقابلة لهما في نظام إدارة قواعد البيانات:
من مكتبة SQLAlchemy استورد *، ومن مكتبة SQLAlchemy.ext.declarative استورد declarative_base، ومن مكتبة SQLAlchemy.orm استورد relation و sessionmakerالأساس = قاعدة تعريفية ()class Movie ( Base ): __tablename__ = "movies"id = Column ( Integer , primary_key = True ) title = Column ( String ( 255 ), nullable = False ) year = Column ( Integer ) directed_by = Column ( Integer , ForeignKey ( "directors.id" ))director = relation ( "Director" , backref = "movies" , lazy = False )def __init __ ( self , title = None , year = None ) : self.title = title self.year = yeardef __repr__ ( self ): return f "Movie( { self . title } , { self . year } , { self . director } )"class Director ( Base ): __tablename__ = "directors"id = Column ( Integer , primary_key = True ) name = Column ( String ( 50 ), nullable = False , unique = True )def __init __ ( self , name = None ) : self.name = namedef __repr__ ( self ): return f "Director( { self . name } )"engine = create_engine ( "dbms://user:pwd@ host / dbname " ) Base.metadata.create_all ( engine )إدخال البيانات
يمكن إدراج علاقة بين المخرج والفيلم عبر أي من الكيانين التاليين:
Session = sessionmaker ( bind = engine ) session = Session ()m1 = Movie ( "Robocop" , 1987 ) m1 . director = Director ( "Paul Verhoeven" )d2 = Director ( "George Lucas" ) d2 . movies = [ Movie ( "Star Wars" , 1977 ), Movie ( "THX 1138" , 1971 )]حاول : session.add ( m1 ) session.add ( d2 ) session.commit ( ) باستثناء : session.rollback ( )الاستعلام
alldata = session.query ( Movie ) .all ( ) for somedata in alldata : print ( somedata )يُصدر برنامج SQLAlchemy الاستعلام التالي إلى نظام إدارة قواعد البيانات (مع حذف الأسماء المستعارة):
استعلم عن معرفات الأفلام ، وعناوينها ، وسنوات إنتاجها ، ومخرجيها ، ومعرفات المخرجين ، وأسمائهم من جدول الأفلام ، مع ربطها خارجياً بجدول المخرجين بناءً على تطابق معرفات المخرجين مع معرفات المخرجين .الناتج:
فيلم ( روبوكوب ، 1987 ، إخراج بول فيرهوفن ) فيلم ( حرب النجوم ، 1977 ، إخراج جورج لوكاس ) فيلم ( THX 1138 ، 1971 ، إخراج جورج لوكاس )بدلاً من ذلك، عند ضبط الإعدادات lazy=True(الافتراضية)، سيقوم SQLAlchemy أولاً بإصدار استعلام للحصول على قائمة الأفلام، وعند الحاجة فقط (بشكل كسول) لكل مخرج، سيقوم بإصدار استعلام للحصول على اسم المخرج المقابل:
استعلم عن معرف الفيلم ، وعنوانه ، وسنة إنتاجه ، ومخرجه من جدول الأفلام .استعلم عن معرفات وأسماء المديرين من جدول المديرين حيث يكون معرف المديرين مساويًا لـ % sانظر أيضاً
مراجع
- ↑ مايك باير هو مبتكر SQLAlchemy و Mako Templates للغة بايثون.
- ↑ "تنزيل - SQLAlchemy" . SQLAlchemy . تم الاطلاع عليه بتاريخ 21 فبراير 2015 .
- ↑ "الإصدار 2.0.51" . 15 يونيو 2026. تم الاطلاع عليه في 16 يونيو 2026 .
- ↑ "zzzeek / sqlalchemy / source / LICENSE" . BitBucket . تم الاطلاع عليه بتاريخ 21 فبراير 2015 .
- ↑ "سجل التغييرات 0.1 - وثائق SQLAlchemy 2.0" . docs.sqlalchemy.org . تم الاطلاع عليه بتاريخ 2024-07-04 .
- ↑ "سجل التغييرات 1.0 - وثائق SQLAlchemy 2.0" . docs.sqlalchemy.org . تم الاطلاع عليه بتاريخ 4 يوليو 2024 .
- ↑ "سجل التغييرات 1.4 - وثائق SQLAlchemy 2.0" . docs.sqlalchemy.org . تم الاطلاع عليه بتاريخ 4 يوليو 2024 .
- ملحوظات
- جيفت، نوح (12 أغسطس 2008). "استخدام SQLAlchemy" . Developerworks . IBM . تم الاطلاع عليه بتاريخ 8 فبراير 2011 .
- ريك كوبلاند، أساسيات SQLAlchemy، أورايلي ، 2008، رقم ISBN 0-596-51614-2
- برنامج 2006
- رسم الخرائط بين الكائنات والعلاقات
- مكتبات لغة البرمجة بايثون
- برنامج مرخص بموجب ترخيص MIT
