im glad people are finally using dynamic relations....try out rev 3869.

On Dec 7, 2007, at 10:25 AM, Vladimir Iliev wrote:

> from sqlalchemy import *
> from sqlalchemy.orm import *
>
> metadata = MetaData('sqlite://')
> #~ metadata.bind.echo = 'debug'
>
> companies = Table('companies', metadata,
>   Column('company_id', Integer, primary_key=True),
>   Column('name', String(50)))
>
> employees_table = Table('employees', metadata,
>    Column('employee_id', Integer, primary_key=True),
>    Column('company_id', Integer, ForeignKey('companies.company_id')),
>    Column('name', String(50)),
> )
>
> metadata.create_all()
>
> class Person(object):
>    def __init__(self, **kwargs):
>        for key, value in kwargs.iteritems():
>            setattr(self, key, value)
>    def __repr__(self):
>        return "Ordinary person %s" % self.name
> class Company(object):
>    def __init__(self, **kwargs):
>        for key, value in kwargs.iteritems():
>            setattr(self, key, value)
>    def __repr__(self):
>        return "Company %s" % self.name
>
> company_mapper = mapper(Company, companies)
>
> person_mapper = mapper(Person, employees_table, properties={
>    'company': relation(Company, backref=backref('employees',  
> lazy='dynamic'))
> })
>
>
> session = create_session()
>
> c = Company(name='company1')
> c.employees.append(Person(name='joesmith'))
> session.save(c)
> session.flush()
>
> session.clear()
>
> c = session.query(Company).get(1)
>
> print c.employees
> print list(c.employees)
> print c.employees.count()
>
> metadata.drop_all()


--~--~---------~--~----~------------~-------~--~----~
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