我正在使用web.py并进行以下数据库调用。
results = db.query("""SELECT users.EMAIL, credentials.STATUS
FROM users
INNER JOIN credentials
ON users.ACCOUNT_ID = credentials.ACCOUNT_ID
WHERE credentials.API_KEY=%s""" % api_key)
当我尝试访问结果时,我遇到了各种各样的错误:
>> for i in results:
>> print i
>> print results[0]['EMAIL']
>> print results[0]['STATUS']
IndexError: already passed 0
如果我删除了打印语句,我会得到以下内容:
Storage {'STATUS': u'ACTIVE', 'EMAIL': u'testuser@gmail.com'}
但我无法将results
作为字典访问。
我该怎么办?
答案 0 :(得分:2)
db.query
方法的返回值的行为类似于序列,但它基本上是迭代器。 (确切地说,它是web.utils.IterBetter
object)
Python中的迭代器通常不能后退。
在迭代时对行执行某些操作。
for row in results:
print row['EMAIL']
print row['STATUS']
或将结果作为序列随机访问它:
results = list(results)
print results[0]['EMAIL']
print results[0]['STATUS']