我需要使用Python从SQL数据库中获取一些数据。
我通常会执行以下操作
import mysql.connector
from tkinter import *
from tkinter import messagebox
from tkinter import ttk
(...)
cursor.execute("SELECT * FROM solicitudes WHERE (fechaentrada BETWEEN %s AND %s) ", solicitudes2)
w=cursor.fetchall()
print(w)
根据需要打印:
[(1, None, 'HM', 'prueba1', 'prueba1', 'MP', None, None, datetime.date(2020, 1, 1), datetime.date(2020, 5, 1), 'Sin disp', None), (2, None, 'HCL', 'prueba1', 'prueba1', 'AD', None, None, datetime.date(2020, 1, 1), datetime.date(2020, 5, 1), 'Sin disp', None), (3, None, 'HCR', 'prueba2', 'prueba2', 'AD', None, None, datetime.date(2020, 1, 10), datetime.date(2020, 5, 1), 'TA+2', None)]
但是,这次,我得到了带有原始代码的“原始格式”:
[{'id': 1, 'fecharegistro': None, 'hotel': 'HM', 'agencia': 'prueba1', 'pax': 'prueba1', 'regimen': 'MP', 'DUIrooms': None, 'SGrooms': None, 'fechaentrada': datetime.date(2020, 1, 1), 'fechasalida': datetime.date(2020, 5, 1), 'Propuesta': 'Sin disp', 'Comentario': None}, {'id': 2, 'fecharegistro': None, 'hotel': 'HCL', 'agencia': 'prueba1', 'pax': 'prueba1', 'regimen': 'AD', 'DUIrooms': None, 'SGrooms': None, 'fechaentrada': datetime.date(2020, 1, 1), 'fechasalida': datetime.date(2020, 5, 1), 'Propuesta': 'Sin disp', 'Comentario': None}, {'id': 3, 'fecharegistro': None, 'hotel': 'HCR', 'agencia': 'prueba2', 'pax': 'prueba2', 'regimen': 'AD', 'DUIrooms': None, 'SGrooms': None, 'fechaentrada': datetime.date(2020, 1, 10), 'fechasalida': datetime.date(2020, 5, 1), 'Propuesta': 'TA+2', 'Comentario': None}]
如果我尝试执行print(w[1][2])
(通常会返回'HM'
),则会出现此错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\usuario\AppData\Local\Programs\Python\Python38-32\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "c:/www/CursoPandas/Solicitudes/06septimointentoapp.py", line 146, in nueva_solicitud
panoramica()
File "c:/www/CursoPandas/Solicitudes/06septimointentoapp.py", line 379, in panoramica
print(w[1][2])
KeyError: 1
该代码位于名为panoramica()
的函数中,该函数由名为nueva_solicitud()
的函数调用,该函数由Tkinter按钮调用。
有什么主意吗?我将不胜感激。
我已经编程了一个星期,如果错误很明显,请不要太苛刻。