Ben Finney wrote: > Gilles Ganault <[EMAIL PROTECTED]> writes: > > >> Hello >> >> I'm getting some unwanted result when SELECTing data from an SQLite >> database: >> >> ====== >> sql = 'SELECT id FROM master' >> rows=list(cursor.execute(sql)) >> for id in rows: >> sql = 'SELECT COUNT(code) FROM companies WHERE code="%s"' % id[0] >> result = list(cursor.execute(sql)) >> print "Code=%s, number=%s" % (id[0],result[0]) >> ====== >> Code=0111Z, number=(47,) >> ====== >> >> I expected to see "number=47". Why does Python return "(47,)"? >> > > The result of an SQL SELECT is a sequence of tuples, where each item > in the tuple is a value for a column as specified in the SELECT > clause. > > SQLAlchemy represents this with a sequence of ResultProxy objects. > When you convert a ResultProxy object to a string, it displays like a > tuple. See the documentation for other ways of accessing various > attributes of a ResultProxy object. > (47,) is the python representation of a one item tuple If you want: Code=0111Z, number=47
Just change your code to: sql = 'SELECT id FROM master' rows=list(cursor.execute(sql)) for id in rows: sql = 'SELECT COUNT(code) FROM companies WHERE code="%s"' % id[0] result = list(cursor.execute(sql)) print "Code=%s, number=%s" % (id[0],result[0][0]) Notice the extra [0] index on the "result" In English: Item zero of the tuple that is item zero of result E.g. >>> result = [(47,)] >>> result = result[0] >>> result (47,) >>> result[0] 47 -- Andrew -- http://mail.python.org/mailman/listinfo/python-list