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
-~----------~----~----~----~------~----~------~--~---

Reply via email to