I'm finally getting a bit more at ease with the more complex aspects
of SQLAlchemy.  But yet again, I still need some help.  Now I'm trying
to change the ordering from my mapper's default.  My Signal mapper was
defined to order by the signal_name (using an AssociationProxy).  That
has been working.

With the below new query, I'd like to order using an additional
table's column: signal_type_size_order.

u1_join = sql.join(db.signals, db.module_inputs,
                 sql.and_(db.module_inputs.c.module_id == m.module_id,
                          db.module_inputs.c.signal_id ==
                          db.signals.c.signal_id))
u2_join = sql.join(db.signals, db.module_outputs,
                 sql.and_(db.module_outputs.c.module_id == m.module_id,
                          db.module_outputs.c.signal_id ==
                          db.signals.c.signal_id))
sig_id_sel = sql.select([db.signals.c.signal_id],
                        from_obj=[u1_join]). \
        union(sql.select([db.signals.c.signal_id], from_obj=[u2_join]))

# Construct a query to gather the signals from the above UNION
sel = sql.select([db.signals, db.signal_types],
        db.signals.c.signal_id.in_(sig_id_sel),
        from_obj=[sql.join(db.signals, db.signal_types)],
        use_labels=True,
        order_by=[db.signal_types.c.signal_type_size_order,
                  db.signals.c.signal_name])
res = model.session.query(domain_model.Signal).instances(sel.execute(),
        sql.class_mapper(domain_model.SignalType))


Everything is perfect up through the "sel" assignment.  sel evaluates
to the below query which returns a correct order from the sqlite3 CLI.
 Something is wrong with my "res" assignment line.  (I am using 0.3.5
at least until my unit tests pass again.)

SELECT signals.signal_id AS signals_signal_id, signals.signal_name AS
signals_signal_name, signals.signal_description AS
signals_signal_description, signals.signal_units_id AS
signals_signal_units_id, signals.signal_type_id AS
signals_signal_type_id, signals.signal_range AS signals_signal_range,
signal_types.signal_type_id AS signal_types_signal_type_id,
signal_types.signal_type_name AS signal_types_signal_type_name,
signal_types.signal_type_ctype AS signal_types_signal_type_44f9,
signal_types.signal_type_size_order AS signal_types_signal_type_e087,
signal_types.signal_type_description AS signal_types_signal_type_f7d7
FROM signals JOIN signal_types ON signal_types.signal_type_id =
signals.signal_type_id
WHERE signals.signal_id IN (SELECT signals.signal_id AS signal_id
FROM signals JOIN module_inputs ON module_inputs.module_id = ? AND
module_inputs.signal_id = signals.signal_id UNION SELECT
signals.signal_id AS signal_id
FROM signals JOIN module_outputs ON module_outputs.module_id = ? AND
module_outputs.signal_id = signals.signal_id) ORDER BY
signal_types.signal_type_size_order, signals.signal_name

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

Reply via email to