请帮帮我。我正在运行一个简单的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的新手。
非常感谢....
答案 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)
之类的整个列表,并检查存在多少索引。