Thanks, Michael! That was exactly what I'm looking for :)
Andi On Thu, May 28, 2009 at 5:45 PM, Michael Bayer <[email protected]> wrote: > > Andi Albrecht wrote: >> >> class Foo(object): >> pass >> >> database.mapper(Foo, database.metadata.tables["footable"]) >> >> Now I have a rather complex SQL that I would like to execute directly >> instead of using object queries: >> >> sql = "select * from footable where something_really_complex_happens" >> for rp in database.session.execute(sql): >> f = Foo() >> for key, value in rp.iteritems(): >> setattr(f, key, value) >> >> The problem is that when I try to save the created object, it tries to >> do an INSERT instead of an UPDATE and that AppenderQueries defined in >> the mapping don't work as they try to build a JOIN condition with None >> instead of the primary key. >> >> There must be something wrong with this approach :) Any tipps how to >> solve this? > > the most typical way to use raw SQL is to make sure it has the right > column names and use query.from_statement(): > > rows = query.from_statement("select the_correct column_names from > <anything>").all() > > a variant of the above approach is to pass the live cursor into > query.instances(), but this doesn't really change much: > > result = engine.execute("select the_correct column_names from <anything>") > rows = list(query.instances(result)) > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
