[storm] agrupando condiciones en storm

Jamu Kakar jkakar at kakar.ca
Fri May 1 22:42:31 UTC 2015


Hola Javier,

2015-05-01 7:00 GMT-07:00 Javier Marcon <javiermarcon at gmail.com>:
> Hola, yo necesitaría agrupar condiciones en storm, para tener una
> consulta sql similar a esta:
>
> SELECT Persona.nombre, Persona.apellido, Persona.email, Persona.edad,
> persona.casado
> FROM Persona WHERE Persona.casado = %s AND ((Persona.nombre = %s and
> Persona.edad = %s) or Persona.edad = %s) ORDER BY Persona.patente
>
> Hice el siguiente codigo paro no encuentro como hacer el agrupamiento
> del final:
>
>                 params = []
>                 if nombre is not None:
>                         params.append( Persona.nombre == unicode(nombre) )
>                 if apellido is not None:
>                         params.append( Persona.apellido ==
> unicode(apellido) )
>                 if condiciones is not None:
>                         cond = Or(And(Persona.nombre == u'Pepe',
> Persona.edad == 20),
>                             Persona.edad == 25)
>                         params.append( *condiciones )
>                 if params:
>                         resultado = store.find(Persona, And(*params))
>                 else:
>                         resultado = store.find(Persona)
>
> Alguien tiene idea de como puedo hacerlo?

This should generate the SQL query you provided:

  result = store.find(Persona,
                      Person.casado == casado,
                      Or(And(Persona.nombre == nombre, Persona.edad ==
edad),
                         Persona.edad == edad))
  result.order_by(Persona.patente)

>From the code you have above, I wonder if what you want is something
like this:

  params = [Person.casado == casado]
  if nombre is not None and edad is not None:
      params.append(Or(And(Persona.nombre == nombre, Persona.edad == edad),
                       Persona.edad == edad))
  elif edad is not None:
      params.append(Persona.edad == edad)
  result = store.find(Persona, *params)
  result.order_by(Persona.patente)

Hope this helps,
J.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/storm/attachments/20150501/e98c1097/attachment.html>


More information about the storm mailing list