... rispetto a sqlalchemy dichiarativo?Quali sono i vantaggi dell'uso di Elixir
risposta
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.
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).
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-...)