2010-10-18 15 views

risposta

2

Si potrebbe dire che Elixir è stato fatto perché SQLAlchemy non è sufficiente dichiarativo per alcune persone.

Dal Elixir sito:

Elixir è destinato a sostituire l'estensione ActiveMapper SQLAlchemy, e il progetto TurboEntity ma non intenzione di sostituire il nucleo caratteristiche di SQLAlchemy, e invece concentra sulla fornitura una sintassi semplice per modello di definire gli oggetti quando non bisogno della piena espressività del manuale Mapper definizioni di SQLAlchemy.

1

La sintassi Elixir è una cosa che trovo utile quando si costruisce un database per una determinata applicazione da zero e tutto è capito tutto in anticipo.

ho avuto il mio miglior fortuna con SQLAlchemy quando lo si utilizza su database legacy (e su altri schemi simile logisticamente immutabili). Particolarmente utile è il plug-in SQLSoup, per estrazioni di dati in sola lettura di sola lettura in preparazione alla migrazione altrove.

YMMV ma Elixir non è realmente progettato per adattarsi agli schemi precedenti e SQLAlchemy è appropriato per la maggior parte dei progetti di piccole e medie dimensioni (a mio parere, ovviamente).

5

Ho started a list here su differenze/vantaggi (tecnici) pratici di elisir contro sqlalchmey, ma non so se le mie affermazioni sono giuste perché la mia conoscenza di sqlalchemy è molto limitata (io uso una porzione molto piccola di elisir e sqla).

Sarebbe molto a prova di saggio che le risposte mostrano un esempio di codice in sqla e l'equivalente in elisir per mostrare le differenze, come ad alcune domande di confronto è stato risposto qui a StackOverflow (penso a mako vs Jinja2 per esempio)

Comunque, ecco la mia lista, sarei davvero grato se la gente mi correggono (correggere i miei presupposti su sqlalchemy)

  • Elixir implementa il Registra modello attivo ed è destinato a sostituire l'estensione ActiveMapper SQLAlchemy. (datato: sqlalchemy recuperato?)

  • Le relazioni in bianco e nero sono chiare (er): OneToMany, ManyToOne, ManyToMany e OneToOne è più chiaro della relazione di sqla. A colpo d'occhio, puoi vedere le relazioni in bianco e nero dei tuoi modelli.

  • Inhertience è più comoda rispetto a sqlalchemys. È anche più visibile dal momento che derivano dalle classi. In sqla, dovrai modificare gli attributi with_polymorphisme e polymorphic_on.

  • Inhertience: in elisir, le tabelle, le colonne e le chiavi esterne vengono create automaticamente, ma non in sqlalchemy. (è vero al 100%?)

  • Elixir crea automaticamente una colonna ID per tutte le tabelle (se non altro primary_key è dichiarata)

  • Elixir crea FK per le relazioni automaticamente, SQL non (?)

  • In elisir, la maggior parte di volte, non devi specificare il backref nelle tue relazioni. In sqla, devi sempre (?)

  • Elixir ha un'estensione versionning (SQL non hanno?)

  • Elixir ha un'estensione associabile che crea relazioni ManyToMany e offre belle metodi select_by_XXX dove XXX è il nome della classe "associata". Sqla non ha questo tipo di estensione (?)

  • Le relazioni di ereditarietà sono fatte in modo trasparente in elisir. In sqla, non lo è, devi fare questo: http://www.sqlalchemy.org/docs/reference/ext/declarative.html#mixing-...)

Problemi correlati