Thanks, that works. But now, with the attribute_mapped_collection, every language is queried and assigned to the dict (quite an overhead in my use-case).
how could i achieve to load only a selected language which is dynamically assigned on the query? i thought of something like a column_property which reads a param or option passed to the query. is this possible? or is another approach better? Dom On Dec 3, 7:13 pm, Simon <[EMAIL PROTECTED]> wrote: > That would be > > desc = session.query(I18Product).filter_by(id=1183, lang="en").one() > > The Problem with your query is that you query() for Product, not for > I18NProduct, so regardless of and filter and join functions you > specify, you will always receice Product objects. Think of "query > (Product)" as a final filter which creates Product objects from the > returned rows, and ignores everything which is not a column of > Product. > > For x.i18n (a property of Product) to work as you described, have a > look > athttp://www.sqlalchemy.org/docs/04/mappers.html#advdatamapping_relatio... > . You'd basically want to setup your relation() as a dict using the > lang column as key. > > Simon > > On 3 Dez., 16:33, Dom <[EMAIL PROTECTED]> wrote: > > > Hi > > > i tried the following example, but i cant get the join to work: > > > CREATE TABLE product ( > > > id INTEGER, > > price NUMERIC(15,2) NOT NULL, > > > PRIMARY KEY(id) > > ); > > > CREATE TABLE i18n_product ( > > id INTEGER, > > lang VARCHAR(2), > > description VARCHAR(150) NOT NULL, > > > PRIMARY KEY(id, lang), > > FOREIGN KEY(id) REFERENCES product(id) > > ); > > > python: > > > class Product(Base): > > __table__ = Table('product', Base.metadata, autoload=True) > > > class I18NProduct(Base): > > __table__ = Table('i18n_product', Base.metadata, autoload=True) > > product = relation(Product, backref=backref('i18n')) > > > x=session.query(Product).filter(Product.id==1183).join('i18n').filter > > (I18NProduct.lang=='en').one() > > > the sql looks of the JOIN looks good, but if i access x.i18n, another > > queries is build which returns all of my language entry for one > > product, what i try to get is one product description in the given > > language. > > > please tell me how to do that correctly, thank you :) > > > cheers > > Dom > > --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---