0 in a numerical primary key.. excuse if it is obvious, but: what's
wrong? :/  I've tried and nothing.. when ask for instances that are
linked through 't22' get all instances of 'Table2'. There must be
something in the relationships configuration involving the entire
table.. can it be?


On 18 mayo, 22:30, Michael Bayer <mike...@zzzcomputing.com> wrote:
> have you tried not using "0" for a primary key ?   i feel like that  
> might be getting in the way.
>
> On May 18, 2009, at 3:59 PM, fleong wrote:
>
>
>
> > Sorry for the delay. Yes, i want to reference Table22, the 'correct'
> > code is as follows, but obtains the same result. Don't understand
> > because not run when it corrects.. Is it not possible to link
> > TableExt22 with Table22 only?
>
> > Thanks for the quick answer!
> > Fernando
>
> > #-------------------------------------------------------------------------
> > from sqlalchemy import *
> > from sqlalchemy.orm import *
>
> > engine = create_engine('sqlite:///',echo = True)
>
> > metadata = MetaData()
>
> > table_1 =  \
> > Table(
> >    'table_1', metadata,
> >    Column('id', Integer, primary_key = True),
> > )
>
> > table_2 = \
> > Table(
> >    'table_2', metadata,
> >    Column('id', Integer, primary_key = True),
> >    Column('id2', Integer, primary_key = True),
> >    Column('type', Integer, nullable = False),
> >    ForeignKeyConstraint(['id'],['table_1.id'])
> > )
>
> > table_21 = \
> > Table(
> >    'table_21', metadata,
> >    Column('id', Integer, primary_key = True),
> >    Column('id2', Integer, primary_key = True),
> >    Column('info', String),
> >    ForeignKeyConstraint(['id'],['table_2.id']),
> > )
>
> > table_22 = \
> > Table(
> >    'table_22', metadata,
> >    Column('id', Integer, primary_key = True),
> >    Column('id2', Integer, primary_key = True),
> >    Column('ext', Integer, primary_key = True),
> >    Column('info', String),
> >    ForeignKeyConstraint(['id'],['table_2.id']),
> >    ForeignKeyConstraint(['ext'],['table_ex22.id'])
> > )
>
> > table_ex22 = \
> > Table(
> >    'table_ex22', metadata,
> >    Column('id', Integer, primary_key = True),
> > )
>
> > class Table1(object):
> >    pass
>
> > class Table2(object):
> >    pass
>
> > class Table21(Table2):
> >    pass
>
> > class Table22(Table2):
> >    pass
>
> > class TableEx22(object):
> >    pass
>
> > mapper(Table1, table_1,
> >       properties = {\
> >       't2': relation(Table2, backref = 't1', cascade = 'all, delete,
> > delete-orphan', passive_updates = False, passive_deletes = False),
> >       }
> > )
> > mapper(TableEx22, table_ex22,
> >       properties = {\
> >       't22': relation(Table22, backref = 'tex', cascade = 'all,
> > delete, delete-orphan', passive_updates =False, passive_deletes =
> > False),
> >       }
> > )
> > mapper(Table2, table_2, polymorphic_on=table_2.c.type,
> > polymorphic_identity=0)
> > mapper(Table21, table_21, inherits=Table2, polymorphic_identity=1)
> > mapper(Table22, table_22, inherits=Table2, polymorphic_identity=2)
>
> > Session = sessionmaker()
> > #------------------------------------------------------------------------------
>
> > #test:
>
> > metadata.bind = engine
> > metadata.create_all()
>
> > s = Session()
>
> > t = Table1()
> > t.id = 0
>
> > tex = TableEx22()
> > tex.id = 0
>
> > s.add(t)
> > s.add(tex)
> > s.commit()
>
> > t21 = Table21()
> > t21.id2 = 0
> > t21.t1 = t
> > s.add(t21)
> > s.commit()
>
> > t22 = Table22()
> > t22.id2 = 1
> > t22.t1 = t
> > t22.tex = tex
> > s.add(t22)
> > s.commit()
>
> > for i in tex.t22:
> >    print type(i)
>
> > On 18 mayo, 18:00, Michael Bayer <mike...@zzzcomputing.com> wrote:
> >> On May 18, 2009, at 8:51 AM, fleong wrote:
>
> >>> t = Table1()
> >>> t.id = 0
>
> >>> tex = TableEx22()
> >>> tex.id = 0
>
> >>> s.add(t)
> >>> s.add(tex)
> >>> s.commit()
>
> >>> t21 = Table21()
> >>> t21.id2 = 0
> >>> t21.t1 = t
> >>> s.add(t21)
> >>> s.commit()
>
> >>> t22 = Table22()
> >>> t22.id2 = 1
> >>> t22.t1 = t
> >>> t22.tex = tex
> >>> s.add(t22)
> >>> s.commit()
>
> >>> for i in tex.t22:
> >>>    print type(i)
>
> >>>>> [0]
> >>> <class '__main__.Table21'>
> >>> <class '__main__.Table22'>
>
> >> TableEx22.t22, despite the name, references the Table2 class.   You
> >> probably want that to reference Table22.  the result is still  
> >> strange,
> >> but this whole program contains typos and doesn't even run when they
> >> are corrected, so for further help you'd have to post the actual test
> >> case.
--~--~---------~--~----~------------~-------~--~----~
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 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to