Идея кода состоит в том, чтобы взять строки из базы данных и вставить в таблицу в документе Word.Количество строк в таблице зависит от условия if i[2]<i[3]
.Это означает, что если element3 (это i [2]) меньше, чем element4 (это i [3]), тогда в таблицу будет добавлена новая пустая строка (RowCount=RowCount+1
).
Например.Сразу после строки myresults=mycursor.fetchall()
вставьте эту строку: myresults = [('Winston', '1', '2', '3'), ('Julia', '1', '2', '3')]
и запустите программу, она должна работать, потому что i [2] (строка '2') меньше, чем i [3] (строка '3).«).Условие «2» <«3» верно оба раза.Все в порядке, добавлены две новые строки, а затем к этим строкам добавлены две строки данных. </p>
Теперь измените только одно значение (от 3 до 101): myresults = [('Winston', '1', '2', '101'), ('Julia', '1', '2', '3')]
и запуститепрограмма не должна работатьУсловие '2' <'101' неверно (и это не двойное мышление, это из-за правил сравнения строк, строка, начинающаяся с '1', меньше строки, начинающейся с '2').Таким образом, одна строка не создается в таблице, а более поздним двум строкам данных требуется две строки, но строка только одна. </p>
Сообщение об ошибке IndexError: list index out of range
означает, что в таблице нет строки с таким индексом.
Таким образом, в качестве решения вы можете преобразовать строку в число с плавающей точкой до выполнения условия.Если проблема не в правилах сравнения строк, а в числах, вам необходимо переосмыслить алгоритм.
Здесь можно указать результат запроса sql ("SELECT badgename,cost,stock, desiredstock FROM badges
").Вы можете напечатать это сразу после строки myresults=mycursor.fetchall()
и вставить эту строку: print(mycursor.fetchall())
.Или показать как tk.messagebox.showinfo
.Или проверьте прямо в БД.
Не нужно показывать все данные, необходимо проверить два последних элемента (i [2], i [3]).
Давайте посмотрим на это.