This is an unusual way to update an object that you've already retrieved:

        result = session.query(Executions). \
                filter_by(id=execution_id).first()
        if result.end_date is None:
            e =
update(Executions).where(Executions.id==bindparam("execution_id")). \
                values(end_date=bindparam("now"))
            self.connection.execute(e, execution_id=execution_id,
now=datetime.datetime.now())

It would be more natural to write it like this:

  if result.end_date is None:
      result.end_date = datetime.datetime.now()
      session.flush()

Also, if "id" is the primary key on your Executions class, you can
write the first line as:

  result = session.query(Executions).get(execution_id)


On Thu, Mar 7, 2013 at 1:58 AM, Michael Bayer <mike...@zzzcomputing.com> wrote:
> in the 0.7 series, you can't pass an ORM mapped class as the subject of the
> core update() construct:
>
> e = update(Executions).where(Executions.id==bindparam("execution_id")). \
> values(end_date=bindparam("now"))
>
> that statement will work as is if you just refer to the Table:
>
> e =
> update(Executions.__table__).where(Executions.id==bindparam("execution_id")).
> \
> values(end_date=bindparam("now"))
>
> also note that the indirection between bindparam("foo") and
> connection.execute(stmt, foo="some value") is not needed; you can embed
> literal values directly in the statement, and the Core will convert them to
> bound parameters (just use echo=True to see it in action):
>
> e = update(Executions).where(Executions.id==execution_id). \
> values(end_date=datetime.datetime.now())
>
> At the ORM level,  you can use query.update():
>
> session.query(Executions).filter(Executions.id==execution_id).update({"end_date":datetime.now()},
> synchronize_session=False)
>
>
> On Mar 6, 2013, at 8:06 PM, Mauricio de Abreu Antunes
> <mauricio.abr...@gmail.com> wrote:
>
> So, i have read @StackOverflow some tips.
> There is a lot of people saying they have to make a query on the table and
> then update it. there is no way to upgrade without performing a query?!
>
> On Wednesday, March 6, 2013 6:17:35 PM UTC-3, Mauricio de Abreu Antunes
> wrote:
>>
>> Hello,
>>
>> I'm new to SQLAlchemy. Currently I'm using SQLAlchemy 0.7.1.
>> Reading the tutorial, I tried to write my codes like those examples but I
>> had no success working on it.
>>
>> Code is here:
>> https://gist.github.com/mauricioabreu/5103163
>>
>> Do I need to map the table Executions to execute an update expression on
>> it?
>>
>> Sorry if this is a very noob question.
>>
>> If you need more info about the problem let me know.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to