On 6/14/06, Michael Bayer <[EMAIL PROTECTED]> wrote:
> no thats possibly a little weird...you should send me what youre
> doing so i can see what thats about.  is this only with self-
> referential mappers ?

Well, maybe I'm doing something that's weird. Again, here's a minimal
example - the weirdness comes from having an unenforced ForeignKey,
because there is more than one table that it might refer to (a Car
could belong to a Company, or to a Person)

#### Begin code ####

from sqlalchemy import *

meta = BoundMetaData('sqlite://', echo=False)

company_table = Table('company', meta,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    )

person_table = Table('person', meta,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    )

car_table = Table('car', meta,
    Column('id', Integer, primary_key=True),
    # owner_id is sort-of, but not really, an FK - it could refer
    # to a company or to a person:
    Column('owner_id', Integer, nullable=False),
    )

meta.create_all()

class Car(object):
    pass
class Company(object):
    pass
class Person(object):
    pass

Car.mapper = mapper(Car, car_table)
Company.mapper = mapper(Company, company_table)
Person.mapper = mapper(Person, person_table)

if True:
    # This doesn't work...
    Company.mapper.add_property(
        'cars',
        relation(Car, primaryjoin=(car_table.c.id==company_table.c.id)))
    Person.mapper.add_property(
        'cars',
        relation(Car, primaryjoin=(car_table.c.id==person_table.c.id)))
else:
    # but this does.
    Company.mapper.add_property(
        'cars',
        relation(Car, primaryjoin=(car_table.c.id==company_table.c.id),
                 foreignkey=[car_table.c.id]))
    Person.mapper.add_property(
        'cars',
        relation(Car, primaryjoin=(car_table.c.id==person_table.c.id),
                 foreignkey=[car_table.c.id]))

#### End code ####

I have been doing something like this for a few days, and it worked
until I synced with svn today.

As you see in the example, I can work around it quite easily, so it's
not slowing down my work.

Chris Perkins


_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to