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/08 16:46]
alfred
fw:elixir [2020/05/09 09:25] (actual)
Línea 87: Línea 87:
  
 ===== Elementos del modelo ===== ===== Elementos del modelo =====
 +
 +
 +
 +
 +
 +
 +
  
  
Línea 104: Línea 111:
   * ''​Integer''​   * ''​Integer''​
   * ''​UnicodeText'',​ texto largo.   * ''​UnicodeText'',​ texto largo.
 +  * ''​BigInteger''​
 +  * ''​Boolean''​
 +  * ''​Date'',​ se introduciría por ejemplo como: ''​element.date_retrieved = datetime.datetime.date(datetime.datetime.now())''​
 +  * ''​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 112: 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 267: 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 291: 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 303: 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 ====
Línea 311: Línea 349:
  
 ===== Notas ===== ===== Notas =====
 +
  
 ==== Otros ==== ==== Otros ====
-  * Podemos utilizar el tipo de campo ''​Enum''​ para hacer enumeraciones:​ +
-<code python>​ +
-class MyStuff(Entity):​ +
-    e = Field(Enum(u'​foobar',​ u'​baz',​ u'​quux',​ None)) +
-</​code>​+
   * Ejecutar SQL al iniciar la aplicación:​   * Ejecutar SQL al iniciar la aplicación:​
 <code python> <code python>
fw/elixir.1312822007.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)