Sto usando SQLAlchemy con il paragdim ORM. Non riesco a trovare un modo per fare un'istruzione CASE WHEN. Non trovo informazioni su questo sul web.CASE WHEN con ORM (SQLalchemy)
È possibile?
Sto usando SQLAlchemy con il paragdim ORM. Non riesco a trovare un modo per fare un'istruzione CASE WHEN. Non trovo informazioni su questo sul web.CASE WHEN con ORM (SQLalchemy)
È possibile?
Vedere la funzione sqlalchemy.sql.expression.case e altri esempi nella pagina di documentazione. Ma sarebbe simile a questa (dalla documentazione legata 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: (rispondendo al commento) Certo si può, vedi esempio qui sotto:
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
Vedere anche Using a hybrid per un esempio di case
utilizzato nelle proprietà ibride.
Quindi, nessun possiblity con l'ORM? – Oodini
È possibile, vedere la risposta aggiornata con un esempio che funziona bene. – van
Grazie! E congratulazioni al doc per la funzione [query()] (http://docs.sqlalchemy.org/en/latest/orm/session.html#sqlalchemy.orm.session.Session.query) ... – Oodini
Questa è domanda è un duplicato di: http://stackoverflow.com/questions/5430640/sqlalchemy-case-statement-case-if-then-else – Nrai