Am Mittwoch, den 27.09.2006, 13:39 -0400 schrieb Michael Bayer:
> first off, note that this style of relationship is severely limited  
> with regards to the arrangements of A->B->C.  the C's attached to B's  
> are intertwined with the B's that are attached to A's and it will be  
> very confusing to manage those relationships independently of each  
> other.  if you are looking for select efficiency, you would probably  
> be better off just doing normal joins from A->B->C including  
> association tables if they are many-to-many relationships; SA can  
> eager load such a relationship in one query.

Ok, I hope that helps out. because now I found out, that there is -
based on given data - not really a need to have an entry in B, an A can
have a C without an B, thats because People may not want to tell us B
but only C.

> anyway, the closest SA can get to this is to represent your "R" table  
> as a relationship object with its own mapper:
> 
> class ABCRelation(object):pass
> 
> mapper(A, Atable)
> mapper(B,Btable)
> mapper(C,Ctable)
> mapper(ABCRelation, Rtable, primary_key=[R.c.a_id, R.c.b_id,  
> R.c.c_id], properties={
>               'as':relation(A, backref='relations'),
>               'bs':relation(B, backref='relations'),
>               'cs':relation(C, backref='relations')
>       }, allow_null_pks=True)
> 
> a = A()
> b = B()
> c = C()
> r = ABCRelation()
> r.a = a
> r.b = b
> r.c = c
> [session.save(x) for x in [a,b,c,r]]
> session.flush()

Ok, I see.  But so I have to update many objects.  It is sure, that all
the objects depend somehow on A.  So I thought on an other Structure
like doing:

A.B.C # normal relation
A.C   # if we have no B, but if we have a B A.C and A.B.C are refer to
the same object.

Can this be done?

Martin

> etc
> 
> the good news is that the latest trunk of SQLAlchemy (i.e. release  
> 0.2.9) will even keep it straight if you delete an ABCRelation and  
> create a new one with the same relationships in one session; it will  
> turn the DELETE/INSERT into an UPDATE.
> 
> 
> 
> On Sep 27, 2006, at 1:10 PM, Martin Kaffanke wrote:
> 
> > Hi there!
> >
> > I don't know if my english is good enaugh to tell you what I want.
> >
> > I have 3 Tables, lets tell them A, B and C.  The relations:
> >
> > An A kann have some B's and a B can have some C's.  But the main  
> > Select
> > will be:
> >
> > and_(A.c.a_id==B.c.a_id, B.c.b_id==C.c.b_id, C.c.c_id=some_integer)
> >
> > So now there are two joins.
> > As you see, we have two joins.  We would have only one by doing
> >
> > A B C and a R table, where R has all three ID's:
> >
> > R.c.a_id
> > R.c.b_id
> > R.c.c_id
> >
> > A relation table...
> >
> > and_(A.c.a_id==R.c.a_id, C.c.c_id==some_integer)
> >
> > would be enaught.
> >
> > But how can I save data this way with a mapper?
> >
> > Martin
> >
> >
> > ---------------------------------------------------------------------- 
> > ---
> > Take Surveys. Earn Cash. Influence the Future of IT
> > Join SourceForge.net's Techsay panel and you'll get the chance to  
> > share your
> > opinions on IT & business topics through brief surveys -- and earn  
> > cash
> > http://www.techsay.com/default.php? 
> > page=join.php&p=sourceforge&CID=DEVDEV
> > _______________________________________________
> > Sqlalchemy-users mailing list
> > Sqlalchemy-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users
> 


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to