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.