我正在使用 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'}
但我无法将结果
作为字典访问。
我应该做什么?
最佳答案
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']
关于python - 带有内连接查询的 web.py 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21631243/