vitsin wrote:
> hi,
> can't figure out why raw SQL works fine, but update() is not working:
> 1.working raw SQL:
> self.session.execute("update public.my_table set
> status='L',updated_at=now() where my_name='%s'" % (self.my_name))
> 
> 2.non working update() from Alchemy:
> s = aliased(MyTable)
> query = self.session.query(s).filter(s.my_name==self.my_name)
> sts = self.session.execute(query).fetchone()
> sts.update(values={'status':'L'})
> 
>     sts.update(values={s.status:'L'})
>   File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py",
> line 2097, in _key_fallback
>     "Could not locate column in row for column '%s'" % key)
> sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for
> column 'update'"
> 
> 
> But Column s.status exists ...
> appreciate any help,
> --vs

In your example, 'sts' represents a single row from the database. These
objects don't have an 'update' method, which is why you are getting that
error. It thinks you are trying to access a column called 'update'
instead.

You appear to be using the SQL Expression language (ie. MyTable is
created using sqlalchemy.Table). You can create an 'update' statement
using MyTable.update(). Examples are at:

http://www.sqlalchemy.org/docs/core/tutorial.html#inserts-and-updates

(You should be able to substitute conn.execute() with session.execute())

However, you might be interested in using the ORM part of SQLAlchemy:

http://www.sqlalchemy.org/docs/orm/tutorial.html

Your usage would then look something like this (assuming MyMappedClass
is the class mapped to MyTable):

s = MyMappedClass
query = self.session.query(s).filter(s.my_name == self.my_name)
sts = query.first()
sts.status = 'L'
self.session.flush()

Hope that helps,

Simon

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

Reply via email to