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.

Reply via email to