Michael Chambliss wrote:
>
> vehicle_query = """
> select
> v.vehicle_id as vehicle_id,
> v.name as vehicle_name,
> v.description as vehicle_description,
> vt.name as vehicle_type,
> vs.name as vehicle_status,
> v.modify_dttm as vehicle_modify_dttm
> from
> vehicle v,
> vehicle_type vt,
> vehicle_status vs
> where
> v.vehicle_id = :vehicle_id
> and vs.vehicle_status_id = v.vehicle_status_id
> and vt.vehicle_type_id = v.vehicle_type_id
> """
>
> class Vehicle(object):
> def __init__(self, vehicle_id, vehicle_name, vehicle_description,
> vehicle_type, vehicle_status, vehicle_modify_dttm):
> self.vehicle_id = vehicle_id
> self.vehicle_name = vehicle_name
> self.vehicle_description = vehicle_description
> self.vehicle_type = vehicle_type
> self.vehicle_status = vehicle_status,
> self.vehicle_modify_dttm = vehicle_modify_dttm
>
> def __repr__(self):
> return "<Name('%s')>" % (self.vehicle_name)
>
> # Here's where I get sideways...
> # Obviously this won't work, but I'm not sure how to map the query to
> the class
> mapper(Vehicle, ??query??)
the mapper really requires Table metadata in order to be mapped.
vehicle = Table("vehicle", metadata, autoload=True)
vehicle_type = Table("vehicle_type", metadata, autoload=True)
vehicle_status = Table("vehicle_status", metadata, autoload=True)
j = vehicle.join(vehicle_type,
vehicle.c.foo==vehicle_type.c.bar).join(vehicle_status,
vehicle.c.bat==vehicle_status.c.bat)
mapper(Vehicle, j)
I think you'd find that from_statement() is a lot more work for the
example query you have above. With such a mapping, you'd get the base set
of rows with query(Vehicle).all() and simple filtering with
query.(Vehicle).filter_by(vehicle_status_description='foo') , for example.
But from_statement can be invoked at any point.
> from
> vehicle v,
> vehicle_type vt,
> vehicle_status vs
>
> metadata.bind = engine
>
> q = s.query(Vehicle).from_statement(vehicle_query).params(vehicle_id=123)
>
> for vehicle in q:
> print vehicle.vehicle_id, vehicle.vehicle_name
>
> #...
>
> Thanks,
> Mike
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To post to this group, send email to [email protected].
> 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.
>
>
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
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.