IndexError: Tuple Index buiten bereik — Python

Help me alstublieft. Ik gebruik een eenvoudig Python-programma dat de gegevens van MySQL-database weergeeft in een TKIER-formulier …

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)

Dat is het hele programma ….

De fout was

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

Kan iemand me helpen ??? ik ben nieuw in Python.

Heel erg bedankt ….


Antwoord 1, Autoriteit 100%

Waarschijnlijk een van de indices is verkeerd, ofwel de innerlijke of de buitenste.

Ik vermoed dat u wilt zeggen [0]waar u de [1]en [1]hebt gezegd, waar u zei [2]. Indices zijn op 0 gevestigd in Python.


Antwoord 2, Autoriteit 6%

Een tuple bestaat uit een aantal waarden gescheiden door komma’s. zoals

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

tuple zijn index-gebaseerd (en ook onveranderlijk) in Python.

Hier in dit geval x = rows[1][1] + " " + rows[1][2]hebben slechts twee index 0, 1 beschikbaar, maar je probeert toegang te krijgen tot de 3e index.


Antwoord 3

FORMAATFUNCTIE

Deze fout kan optreden in een functieregel format().
Probeer de onderstaande code op uw computer

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

Merk op dat deze fout optreedt. Omdat de punthaken echter werden gebruikt,
argument is doorgegeven aan format(). In Python-termen,

Het aantal argumenten moet overeenkomen met het aantal accolades of superieur zijn.

Onder er zijneen paar voorbeelden die niet als een goede praktijk worden beschouwd, maar die mogelijk zijn zonder fouten voor zover Python3 gaat.

>>> '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* ).

Antwoord 4

Dit komt omdat uw rijvariabele/tupel geen waarde voor die index bevat. U kunt proberen de hele lijst af te drukken zoals print(row)en controleren hoeveel indexen er zijn.

Other episodes