Hi, 

Thanks for the fast answer, Mike! Another small, maybe related question. Let's 
say that I override the column names in the mapper of my base class, for 
example 'body' instead of 'text', like this:

TextItem.mapper = mapper(TextItem, text_items,
                    properties = {'body' : text_items.c.text}
                    )
Post.mapper = mapper(Post, posts,
                     inherits=TextItem.mapper,
                     )

When I specify the inheritance as above, the Post.mapper doesn't use the name 
override of the base class, so text_items.c.text got mapped to 'text' instead 
of 'body' (in the Post class). Wouldn't it make sense for the inherited mapper 
to inherit the names (and not just the sql-columns) as well? Otherwise you have 
to duplicate all your renamed properties in your inheriting class, which I 
would like to avoid in an OO-context (Post inherits from TextItem, so the 
attributes should have the same name).

Well, even though I am a newbie and still have lots of questions...: just 
wanted to say that I really like SQLAlchemy and I think it is a great product. 
Thanks for all the development and also the help on the mailing list!

Cheers, Martin




> Von: Michael Bayer <[EMAIL PROTECTED]>
> An: "Marty McFly" <[EMAIL PROTECTED]>

> its because your post mapper is using joined table inheritance, i.e.  
> joining text_items to posts.  so the primary key of "text_items JOIN  
> posts on text_items.id==posts.id" is a composite of "text_items.id,  
> posts.id".  So.....it considers the primary key of Post id #1 to be  
> this:
> 
>  m.get(1,1)
> 
> or in 0.2, like:
> 
>  m.get((1,1))
> 
> there is the notion that the primary key of such a join should only  
> use the single column from "text_items", since the primary key of  
> "posts" is also the foreign key thats being related to text_items;  
> its redundant and thats why you intuitively used only one primary key  
> value in your get() (and also why get_by works).
> 
> but it seems like Join object is going to have to analyze the join  
> condition to see if there is literally a  
> "table1.primary_key==table2.foreign_and_primary_key" condition since  
> there are other join conditions with two tables like this where this  
> rule wouldnt apply.  that will require some elaborate logic.....so i  
> think you have to stick with the "dual id" thing for the near term.
>

Schnell und einfach ohne Anschlusswechsel zur Lycos DSL Flatrate wechseln und 3 
Monate kostenlos ab effektiven 5,21 EUR pro Monat im ersten Jahr surfen.
http://www.lycos.de/startseite/online/dsl/index.html?prod=DSL&trackingID=email_footertxt

Reply via email to