Hey all. Long time lurker, first time poster. I'm using sqlalchemy ORM. We have a fairly decent sized data set, and one table has a pretty large number of columns, some of them with foreignkeys. I found that limiting a query to specific columns speeds up the time it takes to come back with a result by quite a bit (like 100x faster for this one table, talking like over a second to just a few milliseconds difference).
So I have a query that goes something like this: q = dbsession.query( Host.hostname, Host.platform, Host.ostype, Host.buildstatus, Host.created_on, Host.created_by, Host.modified_by, Host.jobrunid).filter(Host.buildstatus != None).all() I then pass that result through a few functions to validate/update some of the fields. Problem is, I could do this on a regular Query result (q = dbsession.query(Host).filter(Host.buildstatus != None).all()) but the results I get back from this optimized query as posted above, I can't modify those values, I get "AttributeError: can't set attribute". I've been Googling this and searching through these posts, but I guess I don't know the right terms to search on. I can't find anything in the documentation talking about how to modify the results of a KeyedTuple query. Normally I would do something like: for x in q: if pingresult(x.hostname) is False: x.buildstatus = 'removed' dbsession.commit() dbsession.close() But if q is a set of KeyedTuples, this won't work. What's the speediest way to accomplish this task? Should I just stick to querying all the columns (....query(Host)...) and just take the performance hit? -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- 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 https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.