Herramientas de usuario

Herramientas del sitio


fw:elixir

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:elixir [2011/08/28 07:54]
alfred
fw:elixir [2020/05/09 09:25] (actual)
Línea 87: Línea 87:
  
 ===== Elementos del modelo ===== ===== Elementos del modelo =====
 +
 +
 +
 +
 +
 +
  
  
Línea 107: 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:​
 +<code python>
 +class MyStuff(Entity):​
 +    e = Field(Enum(u'​foobar',​ u'​baz',​ u'​quux',​ None))
 +</​code>​
 === Sobre los campos... === === Sobre los campos... ===
   * Podemos indicar que un campo sea clave primaria pasándole por parámetro ''​primary_key=True''​. Si no lo hacemos la clave se generará una automáticamente.   * Podemos indicar que un campo sea clave primaria pasándole por parámetro ''​primary_key=True''​. Si no lo hacemos la clave se generará una automáticamente.
Línea 117: Línea 128:
     his_unique_number = Field(Integer,​ unique=True)     his_unique_number = Field(Integer,​ unique=True)
 </​code>​ </​code>​
- +  * Podemos indicar si un campo puede ser nulo mediante el parámetro ''​nullable''​. 
- +  * Podemos indicar que se indexe un campo agregando el parámetro ''​index=True'':​ 
 +<code python>​ 
 +class Article(Entity):​ 
 +    aid = Field(UnicodeText,​ index = 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>​ 
 +=== Propiedades y métodos de las entidades === 
 +  * 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.
 ==== 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 272: 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 296: Línea 318:
 from sqlalchemy import desc from sqlalchemy import desc
 q.order_by(desc(Movie.year)).all() q.order_by(desc(Movie.year)).all()
 +</​code>​
 +==== Realizar un join ====
 +<code python>
 +PlayerAchievements.query.filter(PlayerAchievements.player == p).filter(PlayerAchievements.teamconfig == t).all()
 </​code>​ </​code>​
 ==== Otros ==== ==== Otros ====
 +=== Consultar por identificador ===
 +<code python>
 +e = Element.get(identifier)
 +</​code>​
 === Consultar una lista vacía === === Consultar una lista vacía ===
 <code python> <code python>
Línea 308: 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 ====
fw/elixir.1314518079.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)