cursor.execute("""SELECT content, COUNT(*)
FROM Attachments
WHERE id = 123""")
results = cursor.fetchall()
print str(results[0][1]) # prints 3, meaning there are three rows returned
print results[1].content # IndexError: tuple index out of range
查询返回三行,但我只能访问第一行。
答案 0 :(得分:3)
COUNT(*)
导致MySQL将所有行聚合为一个。 content
字段将是来自任何聚合行的单个值。
要获取所有行,请使用
cursor.execute("""SELECT content
FROM Attachments
WHERE id = 123""")
results = cursor.fetchall()
然后,您可以查看len(results)
以获取计数:
print(len(results)) # prints 3, meaning there are three rows returned
并使用以下方式获取第二行:
print(results[1])
答案 1 :(得分:1)
我认为你误解了cursor.fetchall()
是如何运作的。它返回所有行的列表,其长度可以使用
results = cursor.fetchall()
print len(results)
应该通过索引错误的外观返回1。
如果你访问results[0][1]
,你正在访问第一行索引1的任何内容,这似乎是3。