This is very helpful.   Thank you.   :-)
Thanks for the sample code too.   It's always easier to start
with something that you know works.

Tina

On Jul 17, 3:28 pm, iain duncan <[EMAIL PROTECTED]> wrote:
> On Tue, 2007-17-07 at 20:57 +0200, Christopher Arndt wrote:
> > tinab schrieb:
> > > I was hoping that there would be a way to generate the
> > > python model code from an existing MySQL database,
>
> I just did this with SQLalchemy and it was surprisingly easy. You will
> probably want to go straight to the SA docs. All you need to do is make
> a stub class and then use assign_mapper to map your stub class to the
> existing table. You will probably also need to explicitly state the
> relationship keys, which can be found in the SA docs in the advanced
> data mapping section.
>
> Here is an example from my project, please excuse the poor formatting:
>
> # to load the table definition by introspecting the database
> heard_table = Table('how_heard', metadata, autoload=True)
> class Heard(object):
>     pass
> assign_mapper(session.context, Heard, heard_table )
>
> champions_table = Table('users', metadata, autoload=True)
> class Champions(object):
>     pass
> assign_mapper(session.context, Champions, champions_table )
>
> # to load the table definition by introspecting the database
> orders_table = Table('orders', metadata, autoload=True)
> class Orders(object):
>     pass
> assign_mapper(session.context, Orders, orders_table )
>
> locations_table = Table('locations', metadata, autoload=True)
> class Locations(object):
>     # attribute for total number of boxes ordered by a location
>     def _box_total(self):
>         count = 0
>         for order in self.orders:
>             if order.status == 'verified': count += order.quantity
>         return count
>     box_total = property( _box_total )
>
> locations_dates_table = Table('locations_dates', metadata,
> autoload=True )
> class LocationDates(object):
>     pass
>
> # LocationDates mapper
> assign_mapper(session.context, LocationDates, locations_dates_table,
>     primary_key= [ locations_dates_table.c.location_id,
> locations_dates_table.c.date ],
>     properties=dict(
>         locations=relation( Locations,
> primaryjoin=and_( 
> locations_table.c.location_id==locations_dates_table.c.location_id ), 
> foreignkey=locations_dates_table.c.location_id ),
>     )
> )
>
> # because the old tables don't have foreign key defs, we need to
> explicitly state them here
> assign_mapper(session.context, Locations, locations_table,
> properties=dict(
>     orders=relation(Orders,
> primaryjoin=and_( orders_table.c.location_id==locations_table.c.location_id 
> ), foreignkey=orders_table.c.location_id ),
>     champion=relation( Champions,
> primaryjoin=and_( locations_table.c.user_id==champions_table.c.user_id ), 
> foreignkey=locations_table.c.user_id ),
>     dates=relation( LocationDates,
> primaryjoin=and_( 
> locations_table.c.location_id==locations_dates_table.c.location_id ),
>                     foreignkey=locations_dates_table.c.location_id,
> order_by=locations_dates_table.c.date ),
> ) )


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" 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/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to