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 <[email protected]> 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
> <[email protected]> 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 [email protected].
> To post to this group, send email to [email protected].
> 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 [email protected].
> To post to this group, send email to [email protected].
> 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.