IndexError:元组索引超出范围----- Python

时间:2013-11-30 03:30:47

标签: python python-2.7 mysql-python

请帮帮我。我正在运行一个简单的python程序,它将以tkinter形式显示来自mySQL数据库的数据......

from Tkinter import *
import MySQLdb

def button_click():
    root.destroy()

root = Tk()
root.geometry("600x500+10+10")
root.title("Ariba")

myContainer = Frame(root)
myContainer.pack(side=TOP, expand=YES, fill=BOTH)

db = MySQLdb.connect ("localhost","root","","chocoholics")
s = "Select * from member"
cursor = db.cursor()
cursor.execute(s)
rows = cursor.fetchall()

x = rows[1][1] + " " + rows[1][2]
myLabel1 = Label(myContainer, text = x)
y = rows[2][1] + " " + rows[2][2]
myLabel2 = Label(myContainer, text = y)
btn = Button(myContainer, text = "Quit", command=button_click, height=1, width=6)

myLabel1.pack(side=TOP, expand=NO, fill=BOTH)
myLabel2.pack(side=TOP, expand=NO, fill=BOTH)
btn.pack(side=TOP, expand=YES, fill=NONE)

这就是整个计划......

错误是

x = rows[1][1] + " " + rows[1][2]
IndexError: tuple index out of range

y = rows[2][1] + " " + rows[2][2]
IndexError: tuple index out of range

任何人都可以帮助我???我是python的新手。

非常感谢....

4 个答案:

答案 0 :(得分:29)

可能其中一个索引是错误的,无论是内部索引还是外部索引。

我怀疑你的意思是[0][1][1]你说[2]。 Python中的索引从0开始。

答案 1 :(得分:1)

元组由多个用逗号分隔的值组成。喜欢

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345

元组在Python中基于索引(也是不可变的)。

在这种情况下,x = rows[1][1] + " " + rows[1][2]只有两个索引0、1可用,但是您正在尝试访问第三个索引。

答案 2 :(得分:0)

格式功能

此错误可能发生在 format() 函数行中。 在你的机器上试试下面的代码

>>> 'This is just a string {}'.format()

请注意发生此错误。然而,因为使用了尖括号,所以没有 参数已传递给 format()。用 Python 术语来说,

<块引用>

参数的数量必须与花括号的数量相匹配或优于。

下面几个例子,它们不被认为是好的做法,但就 Python3 而言可能没有错误。

>>> 'This is just a string'.format()  # No curly braces no arguments. Match in proportion.
>>> 'This is just a string {}'.format('WYSIWYG', 'J. Pinkman', 'ESR')  # The number of arguments is superior to the number of curlies( *curly braces* ).

答案 3 :(得分:-1)

这是因为您的 row 变量/元组不包含该索引的任何值。您可以尝试打印print(row)之类的整个列表,并检查存在多少索引。