Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
fw:elixir [2011/11/21 11:05] alfred |
fw:elixir [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 87: | Línea 87: | ||
| ===== Elementos del modelo ===== | ===== Elementos del modelo ===== | ||
| + | |||
| Línea 112: | Línea 113: | ||
| * ''BigInteger'' | * ''BigInteger'' | ||
| * ''Boolean'' | * ''Boolean'' | ||
| - | * ''Date'' | + | * ''Date'', se introduciría por ejemplo como: ''element.date_retrieved = datetime.datetime.date(datetime.datetime.now())'' |
| * ''DateTime'' | * ''DateTime'' | ||
| * ''Enum'', para hacer enumeraciones: | * ''Enum'', para hacer enumeraciones: | ||
| Línea 133: | Línea 134: | ||
| aid = Field(UnicodeText, index = True) | aid = Field(UnicodeText, index = True) | ||
| title = Field(UnicodeText, nullable = True) | title = Field(UnicodeText, nullable = True) | ||
| + | </code> | ||
| + | * Podemos indicar que un valor por defecto lo coja de una función: | ||
| + | <code python> | ||
| + | class Article(Entity): | ||
| + | last_updated = Field(DateTime, default=datetime.datetime.now) | ||
| </code> | </code> | ||
| === Propiedades y métodos de las entidades === | === Propiedades y métodos de las entidades === | ||
| * Si se crea el campo identificador automáticamente será accesible desde la propiedad ''id''. | * Si se crea el campo identificador automáticamente será accesible desde la propiedad ''id''. | ||
| * El método ''to_dict()'' devuelve el objeto en formato diccionario. | * El método ''to_dict()'' devuelve el objeto en formato diccionario. | ||
| - | |||
| ==== Relaciones ==== | ==== Relaciones ==== | ||
| Para indicar las relaciones entre clases\tablas utilizaremos las funciones ''ManyToOne'' y ''OneToMany'', y ''ManyToMany'' según la cardinalidad: | Para indicar las relaciones entre clases\tablas utilizaremos las funciones ''ManyToOne'' y ''OneToMany'', y ''ManyToMany'' según la cardinalidad: | ||
| Línea 290: | Línea 295: | ||
| ===== Consultas ===== | ===== Consultas ===== | ||
| Aunque las consultas se basan en las de SQLAlchemy y podemos lanzar con ese formato Elixir también nos agiliza dicha tarea. | Aunque las consultas se basan en las de SQLAlchemy y podemos lanzar con ese formato Elixir también nos agiliza dicha tarea. | ||
| - | + | * [[http://docs.sqlalchemy.org/en/rel_0_8/orm/tutorial.html#common-filter-operators|Operadores]], deberemos importar sqlalchemy: ''from sqlalchemy import desc''. | |
| ==== Consultas básicas ==== | ==== Consultas básicas ==== | ||
| * Recoger todos: ''clase.query.all()'' | * Recoger todos: ''clase.query.all()'' | ||
| Línea 315: | Línea 319: | ||
| q.order_by(desc(Movie.year)).all() | q.order_by(desc(Movie.year)).all() | ||
| </code> | </code> | ||
| + | ==== Realizar un join ==== | ||
| + | <code python> | ||
| + | PlayerAchievements.query.filter(PlayerAchievements.player == p).filter(PlayerAchievements.teamconfig == t).all() | ||
| + | </code> | ||
| ==== Otros ==== | ==== Otros ==== | ||
| === Consultar por identificador === | === Consultar por identificador === | ||
| Línea 331: | Línea 338: | ||
| print result['name'] | print result['name'] | ||
| </code> | </code> | ||
| + | <code python> | ||
| + | conn = metadata.bind.engine.connect() | ||
| + | conn.execute('delete from css_actions') | ||
| + | </code> | ||
| ===== Avanzado ===== | ===== Avanzado ===== | ||
| ==== Sesiones ==== | ==== Sesiones ==== | ||