This is really cool.    I'll have to run this by my supervisor
to let her know that this is available.

Thank you.
Tina

On Jul 17, 11:06 pm, Paul Howell <[EMAIL PROTECTED]> wrote:
> Tina,
>
> And the code here may help too:
>
> http://www.sqlalchemy.org/trac/wiki/UsageRecipes/AutoCode
>
> and the addon AutoCode2 is tested with MySQL, it appears.
> Paul
>
> iain duncan 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