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