Estoy usando SQLAlchemy con el paragdim de ORM. No logro encontrar una manera de hacer una instrucción CASO CUANDO. No encuentro información sobre esto en la web.CASO CUANDO con ORM (SQLalchemy)
¿Es posible?
Estoy usando SQLAlchemy con el paragdim de ORM. No logro encontrar una manera de hacer una instrucción CASO CUANDO. No encuentro información sobre esto en la web.CASO CUANDO con ORM (SQLalchemy)
¿Es posible?
Consulte la función sqlalchemy.sql.expression.case y más ejemplos en la página de documentación. Pero sería el siguiente (citamos la documentación vinculada a):
case([(orderline.c.qty > 100, item.c.specialprice),
(orderline.c.qty > 10, item.c.bulkprice)
], else_=item.c.regularprice)
case(value=emp.c.type, whens={
'engineer': emp.c.salary * 1.1,
'manager': emp.c.salary * 3,
})
edit-1: (contestar el comentario) Claro que puedes, véase el siguiente ejemplo:
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, autoincrement=True)
first_name = Column(String)
last_name = Column(String)
xpr = case([(User.first_name != None, User.first_name + " " + User.last_name),],
else_ = User.last_name).label("full_name")
qry = session.query(User.id, xpr)
for _usr in qry:
print _usr.fullname
También vea Using a hybrid para un ejemplo de case
usado en las propiedades híbridas.
Por lo tanto, no hay posibilidad con el ORM? – Oodini
Puede, vea la respuesta actualizada con un ejemplo que funciona bien. – van
¡Gracias! Y felicitaciones al documento por la función [query()] (http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.session.Session.query) ... – Oodini
Esto es cuestión es un duplicado de: http://stackoverflow.com/questions/5430640/sqlalchemy-case-statement-case-if-then-else – Nrai