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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---