Hi, Try to replace
.join(Prosjekt,Sak.prosjektid) with the .join(Prosjekt,Sak.prosjekt) in your first query and write back, Alex On 23 сент, 12:38, olavgg <[EMAIL PROTECTED]> wrote: > I've recently started using SQLAlchemy and is a newb. I have good SQL > knowledge though. My first project with SQLAlchemy is a big project > where I integrate SQLAlchemy to a Plone application. So far it has > been working great for queries from a single table however queries > with joins in two or more tables is way more difficult. > > I've tried to join two tables with two different queries without > success > > The query: > objects = db.session.query(Sak).join(Prosjekt, > Sak.prosjektid).filter(Prosjekt.kundeid==15000032).all() > returns this error: > InvalidRequestError: Mapper 'Mapper|Sak|sak' has no property '<class > 'Products.TikkTakk.model.Prosjekt.Prosjekt'>' > > The query: > objects = db.session.query(Sak).from_statement("SELECT s.saksnr, > s.tittel FROM sak s INNER JOIN prosjekt p ON s.prosjektid = > p.prosjektid WHERE p.kundeid = 15000032).all() > returns this error: > NoSuchColumnError: "Could not locate column in row for column > 'sak.prosjektid'" > > I have some trouble figuring out what I'm doing wrong. Especially the > NoSuchColumnError is frustrating as the column prosjektid exists in > the table sak, it's not a typo either ;) > > The mapping looks like this: > mappers['prosjekt'] = mapper(Prosjekt, tables['prosjekt'], > properties = { > 'sak': relation(Sak) > }) > mappers['sak'] = mapper(Sak, tables['sak'], > properties = { > 'prosjekt': relation(Prosjekt), > }) > > And the models like this: > class Prosjekt(Entity): > """ Prosjekt entity map > """ > > prosjektid = Field(mysql.MSInteger, primary_key=True) > p_prosjektid = ManyToOne('Prosjekt') > sak = OneToMany('Sak') > > using_options(shortnames=True) > > def __init__(self, data): > """ Objects are initialized using form data > """ > > def __repr__(self): > return '<Prosjekt (%d)>' % (self.prosjektid) > > class Sak(Entity): > """ Sak entity map > """ > > prosjektid = ManyToOne('Prosjekt', primary_key=True) > saksnr = Field(mysql.MSInteger, primary_key=True) > > using_options(shortnames=True) > > def __init__(self, data): > """ Objects are initialized using form data > """ > > def __repr__(self): > return '<Sak (%d)>' % ( > self.prosjektid, > self.saksnr, > ) --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---