سؤال

في خدمتي الحالية، نستخدم iBATIS عبر Java لتدمير قواعد بياناتنا.تعجبني الخصائص المجردة للأداة، خاصة عند العمل مع قواعد البيانات القديمة، لأنها لا تفرض عليك تركيبها الخاص.

أنا أبحث عن نظير بايثون لهذه المكتبة, ، نظرًا لأن موقع الويب لا يتوفر إلا على إصدارات Java/.NET/Ruby.لا أريد أن أضطر إلى التبديل إلى Jython إذا لم أكن بحاجة لذلك.

هل هناك أي مشاريع أخرى مشابهة لوظيفة iBATIS المتوفرة لبيثون؟

هل كانت مفيدة؟

المحلول

يقوم iBatis بعزل SQL DML (أو تعريفات SQL) في ملف XML.وهو يركز بشكل خاص على التعيين بين SQL وبعض نماذج الكائنات المحددة في مكان آخر.

يمكن لـ SQL Alchemy القيام بذلك - ولكنه ليس حلاً كاملاً حقًا.مثل iBatis، يمكنك فقط الحصول على تعريفات جدول SQL وتعيين بين الجداول وتعريفات فئة Python.

ما هو أكثر اكتمالا هو أن يكون لديك تعريف للفئة أيضًا تعريف قاعدة بيانات SQL.إذا كان تعريف الفئة ينشئ SQL Table DDL بالإضافة إلى الاستعلام ومعالجة DML، فهذا أكثر اكتمالًا.

أنا أتقلب بين SQLAlchemy و Django ORM.يمكن استخدام SQLAlchemy بطريقة تشبه iBatis.لكنني أفضل أن أجعل تصميم الكائن مركزيًا وأترك ​​تنفيذ SQL مشتقًا من الكائنات بواسطة مجموعة الأدوات.

أستخدم SQLAlchemy للمشاريع الكبيرة والمستقلة.تعمل عمليات تحميل قاعدة البيانات وتحويلات المخطط وتقارير DW وما شابه ذلك بشكل جيد.في هذه المشاريع، ينصب التركيز على العرض الارتباطي للبيانات، وليس على نموذج الكائن.قد يتم نقل SQL الذي تم إنشاؤه إلى إجراءات PL/SQL المخزنة، على سبيل المثال.

أستخدم Django لتطبيقات الويب، مستغلًا إمكانات ORM المضمنة فيه.يمكنك، بقليل من العمل، فصل Django ORM عن بقية بيئة Django.أنت تستطيع توفير الإعدادات العالمية لربط تطبيقك بقاعدة بيانات محددة دون استخدام وحدة إعدادات منفصلة.

يتضمن Django عددًا من العلاقات الشائعة (المفتاح الخارجي، متعدد إلى متعدد، واحد لواحد) والتي يمكنه إدارة تطبيق SQL لها.يقوم بإنشاء تعريفات المفتاح والفهرس لقاعدة البيانات المرفقة.

إذا كانت مشكلتك موجهة نحو الكائنات إلى حد كبير، مع استخدام قاعدة البيانات للاستمرارية، فإن طبقة ORM شبه الشفافة في Django لها مزايا.

إذا كانت مشكلتك علائقية إلى حد كبير، مع معالجة SQL المركزية، فإن القدرة على رؤية SQL التي تم إنشاؤها في SQLAlchemy لها مزايا.

نصائح أخرى

ربما يكون دعم SQLAlchemy SQL Expression مناسبًا.انظر توثيق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top