Вопрос

На моем нынешнем концерте мы используем iBATIS через Java для CRUD наших баз данных.Мне нравятся абстрактные качества этого инструмента, особенно при работе с устаревшими базами данных, поскольку он не навязывает вам свой собственный синтаксис.

Я ищу аналог этой библиотеки на Python., поскольку на веб-сайте доступны только версии Java/.NET/Ruby.Я не хочу переходить на Jython, если в этом нет необходимости.

Существуют ли какие-либо другие проекты, похожие на функциональность iBATIS для Python?

Это было полезно?

Решение

iBatis изолирует SQL DML (или определения SQL) в XML-файле.В частности, он фокусируется на сопоставлении между SQL и некоторой объектной моделью, определенной где-то еще.

SQL Alchemy может это сделать, но на самом деле это не очень полное решение.Как и в iBatis, вы можете просто иметь определения таблиц SQL и сопоставление между таблицами и определениями классов Python.

Более полным является наличие определения класса, которое также определение базы данных SQL.Если определение класса генерирует DDL таблицы SQL, а также DML запросов и обработки, это гораздо более полно.

Я переключаюсь между SQLAlchemy и Django ORM.SQLAlchemy можно использовать аналогично iBatis.Но я предпочитаю сделать проектирование объектов центральным и оставить реализацию SQL производной от объектов с помощью набора инструментов.

Я использую SQLAlchemy для больших пакетных автономных проектов.Загрузки БД, преобразования схем, отчеты DW и тому подобное работают хорошо.В этих проектах основное внимание уделяется реляционному представлению данных, а не объектной модели.Сгенерированный SQL-код можно, например, переместить в хранимые процедуры PL/SQL.

Я использую Django для веб-приложений, используя его встроенные возможности ORM.Приложив немного усилий, вы можете отделить ORM Django от остальной среды Django.Ты можешь предоставить глобальные настройки привязать ваше приложение к определенной базе данных без использования отдельного модуля настроек.

Django включает в себя ряд общих отношений (внешний ключ, «многие-ко-многим», «один-к-одному»), с помощью которых он может управлять реализацией SQL.Он генерирует определения ключей и индексов для подключенной базы данных.

Если ваша проблема в основном объектно-ориентированная, а база данных используется для сохранения, то почти прозрачный уровень ORM Django имеет преимущества.

Если ваша проблема в основном реляционная, с центральным процессором SQL, то возможность просмотра сгенерированного SQL в SQLAlchemy имеет преимущества.

Другие советы

Возможно, подойдет поддержка SQLAlchemy SQL Expression.См. документация.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top