On 2013-06-18 07:10, upperdec...@gmail.com wrote: > I have a set of queries that are run against various > databases/tables. The result is all the same in that I always get > back the same field names. > > I query fld1, fld2, fld3, qty, qty2 from table1 > then I loop thru the results > if fld1 = 'a' add qty to some_total1 ... > I created a database pair that contains (table1,fld1 = 'a',add qty > to some_total1) (table2,fld2 = 'b',qty to some_total1) > (table3,fld3 = 'c',qty2 to > some_total1)
Given the data-structure you have, and that it's hard-coded (rather than able to take dynamic/dangerous user input) for the table-name, I'd do something like this (untested) for tablename, compare_field, compare_value, source_field in ( ("table1", "fld1", "a", "qty"), ("table2", "fld2", "b", "qty"), ("table3", "fld3", "c", "qty2"), ): # using string-building rather than escaping because # 1) we know the tablenames are hard-coded/safe from above, and # 2) this sort of escaping often chokes query parsers query = "SELECT fld1, fld2, fld3, qty, qty2 from %s" % tablename cursor.execute(query) name_index_map = dict( (info[0], i) for info, i in enumerate(cursor.description) ) for row in cursor.fetchall(): db_value = row[name_index_map[compare_field]] if db_value == compare_value: addend = row[name_index_map[source_field]] some_total_1 += addend -tkc -- http://mail.python.org/mailman/listinfo/python-list