I'm using something similar to prefab queries on other objects as if
they were views

I need to show a list of orders (cotta) by dept/customer
(reparto,cliente) filtered by approval date (data_lancio)
in order to print some special labels

First I get only relevant info from the main orders table (data names
ending by _id are foreign keys to other tables)

selCot = sqa.select([
    tabCot.c.id.label("cotta"),
    tabCot.c.impianti_id.label("reparto"),
    tabCot.c.anagrafiche_id.label("cliente"),
    tabCot.c.data_lancio.label("lancio"),
    ],
    ).alias("etichette_per_cotta")

Then I build a list of customers including number of lots approved in
the date range

selCli = sqa.select([
    selCot.c.reparto.label("reparto"),
    selCot.c.cliente.label("cliente"),
    sqa.func.count(selCot.c.cotta).label("num_cotte"),
    sqa.func.min(selCot.c.lancio).label("min_lancio"),
    sqa.func.max(selCot.c.lancio).label("max_lancio"),
    ],
    sqa.and_(
        selCot.c.reparto==sqa.bindparam("reparto"),
        selCot.c.lancio.between(sqa.bindparam("da"), sqa.bindparam
("a"))
        ),
    group_by=[selCot.c.reparto, selCot.c.cliente],
    ).alias("etichette_per_cliente")

Then I MAP the selCli query to some object

mapper(EtichetteCliente, selCli, primary_key=[selCli.c.reparto,
selCli.c.cliente,],[SNIP])
[SNIP] includes orm.relation(s) to connect customer description and
other data

Finally when I build the list I callect all parameters and query
objects like this:

customers = sorted(EtichetteCliente.query.params({"reparto":
reparto.id, "da": dataDa, "a": dataA}).all())

Hope it helps

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to