2010-10-18 8 views

ответ

2

Можно сказать, что Elixir был создан, потому что SQLAlchemy недостаточно декларативен для некоторых людей.

С Elixir сайта:

Elixir предназначен для замены расширение ActiveMapper SQLAlchemy и TurboEntity проект, но не намерены заменить основные возможности SQLAlchemy, а вместо фокусируется на обеспечение более простой синтаксис для , определяющий объекты модели, когда у вас нет , нужна полная выразительность . Руководство пользователя SQLAlchemy .

1

Синтаксис Elixir - это то, что я нахожу полезным при создании базы данных для данного приложения с нуля, и все это заранее выяснено.

У меня была лучшая удача с SQLAlchemy при ее использовании на устаревших базах данных (и на других аналогично логически неизменяемых схемах). Особенно полезен плагин SQLSoup для одноразовых вычитаний данных только для чтения, которые готовятся к миграции в другом месте.

YMMV, но Elixir на самом деле не предназначен для адаптации к старым схемам - и SQLAlchemy является излишним для большинства проектов малого и среднего размера (на мой взгляд, конечно).

5

У меня есть started a list here о практических различиях/преимуществах эликсира и sqlalchmey, но я не знаю, правильны ли мои претензии, потому что мои знания о sqlalchemy очень ограничены (я использую очень небольшую часть эликсира и sqla).

Было бы очень стойким мудро, что ответы показывают пример кода в sqla и эквивалент в эликсире, чтобы показать различия, как в StackOverflow были даны ответы здесь некоторые вопросы сравнения (я думаю о Мако против Jinja2, например)

Во всяком случае, вот мой список, я был бы очень признателен, если бы люди, поправь меня (исправить мои предположения о SQLAlchemy)

  • Elixir реализует Active Record Pattern и предназначен для замены расширения ActiveMapper SQLAlchemy. (от даты: sqlalchemy догнал?)

  • Отношения ч/б моделей понятны (эр): OneToMany, ManyToOne, ManyToMany и OneToOne понятнее, чем отношение sqla. С первого взгляда вы можете увидеть отношения b/w ваших моделей.

  • Inhertience более удобен, чем в sqlalchemys. Это также более заметно, поскольку вы получаете уроки. В sqla вам нужно будет настроить атрибуты_polymorphisme и polymorphic_on.

  • Inhertience: в elixir, таблицы, столбцы и внешние ключи создаются автоматически, но не в sqlalchemy. (это на 100% верно?)

  • Elixir автоматически создает столбец ID для всех таблиц (если нет других primary_key не объявлено)

  • Эликсир создает FK для отношений автоматически, SQL не (?)

  • В эликсире, большинство раз, вам не нужно указывать backref в ваших отношениях. В sqla, вы всегда должны (?)

  • Эликсир имеет versionning расширение SQL (не?)

  • Эликсир имеет ассоциируемый расширение, которое создает ManyToMany отношения и обеспечивает хорошие методы select_by_XXX где ХХХ- имя ассоциированного класса. У Sqla dosen't есть этот вид расширения (?)

  • Наследование отношений осуществляется прозрачно в Эликсире. В sqla это не так, вы должны это сделать: http://www.sqlalchemy.org/docs/reference/ext/declarative.html#mixing-...)

Смежные вопросы