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

Reply via email to