2008-09-16 5 views
4

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

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

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

ответ

10

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

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

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

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

Я использую SQLAlchemy для больших, пакетных, автономных проектов. DB Loads, преобразования схем, отчеты DW и т.п. работают хорошо. В этих проектах основное внимание уделяется реляционному представлению данных, а не объектной модели. Например, созданный SQL может быть перемещен в хранимые процедуры PL/SQL, например.

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

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

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

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