you'd need to make a relationship() that explicitly joins out among all four
tables so that the .Time column is available. To accomplish that you'd
probably want to make a non primary mapper to join to, it would look something
like this:
sel = select([TrafficInput,
Traffic.Time]).select_from(join(TagCaseLink,
TrafficInput).join(TrafficDevice).join(Traffic)).alias()
m = mapper(TrafficInput, sel)
TagList.trafficInputs = relationship(m, order_by=sel.c.Time)
It's probably not how I'd go as it's too complicated. I'd either change the
schema to work more naturally (that you need to join across four tables to get
a certain ordering is a bit of a red flag) or possibly just order in memory,
assuming those relationships all tend to get loaded.
On Jul 26, 2013, at 3:26 AM, Andrew S <[email protected]> wrote:
> Given the following classes/tables:
> class TagList(Base):
> TagID = Column(Integer, primary_key=True)
> trafficInputs = relationship('TrafficInput', secondary='TagCaseLink',
> order_by='Traffic.Time')
>
> class TagCaseLink(Base):
> TagID = Column(Integer, ForeignKey('TagList.TagID'), primary_key=True)
> TrafficInputID = Column(Integer,
> ForeignKey('TrafficInput.TrafficInputID'))
>
> class TrafficInput(Base):
> TrafficInputID = Column(Integer, primary_key=True)
> TrafficDeviceID = Column(Integer,
> ForeignKey('TrafficDevice.TrafficDeviceID'), nullable=False)
> ConfigID = Column(Integer, ForeignKey('Config.ConfigID'), nullable=False)
>
> class TrafficDevice(Base):
> TrafficDeviceID = Column(Integer, primary_key=True)
> TrafficID = Column(Integer, ForeignKey('Traffic.TrafficID'),
> nullable=False)
> DeviceID = Column(Integer, ForeignKey('Device.DeviceID'), nullable=False)
>
> class Traffic(Base):
> TrafficID = Column(Integer, primary_key=True)
> TrafficName = Column(String, nullable=False)
> Time = Column(DateTime, nullable=False)
>
> I get the following error: sqlalchemy.exc.ProgrammingError:
> (ProgrammingError) missing FROM-clause entry for table "Traffic"
>
> So TagList contains a list of trafficInputs that I want ordered by
> Traffic.Time. Is there anyway of doing this?
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.