Я получил эту ошибку в течение 3 цикла с использованием Python и sqlite3 - PullRequest
0 голосов
/ 19 февраля 2019

Я не знаю, как решить эту проблему .. Я искал везде, но я не нашел что-то ..

Я получил эту ошибку

File "D:/python project/master_an1/frontend.py", line 176, in top3_grouped
    for row3 in database.selecttopstudents(row,row2):
  File "D:\python project\master_an1\backend.py", line 64, in selecttopstudents
    self.cur.execute("SELECT nume,prenume,media FROM student WHERE an=? AND facultate=? ORDER BY media LIMIT 3", (faculty,year))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.

И у меня есть этот код..

def top3_grouped(self):
    self.list2.delete(0, END)
    for row in database.selectfaculty():
        self.list2.insert(END, row)
        for row2 in database.selectyear(row):
            self.list2.insert(END, row2)
            for row3 in database.selecttopstudents(row,row2):
                self.list2.insert(END, row3)

def selectfaculty(self):
    self.cur.execute("SELECT facultate FROM student GROUP BY facultate")
    rows = self.cur.fetchall()
    return rows

def selectyear(self,faculty):
    self.cur.execute("SELECT an FROM student WHERE facultate=? GROUP BY an", faculty)
    rows = self.cur.fetchall()
    return rows

def selecttopstudents(self, faculty,year):
    self.cur.execute("SELECT nume,prenume,media FROM student WHERE facultate=? AND an=? ORDER BY media LIMIT 3", (faculty,year))
    rows = self.cur.fetchall()
    return rows

, если я удаляю третий for (row3), отлично работает только с двумя параметрами, получаю эту ошибку, почему?Год - INTEGER, а факультет - TEXT

Когда я запускаю приложение, у меня есть это, отображаются первые слова .. нажмите, чтобы увидеть изображение с imgur.com

1 Ответ

0 голосов
/ 19 февраля 2019

Год - INTEGER, а факультет - TEXT

Вы передаете row и row2 в качестве аргументов selecttopstudents(), и эти элементы не являются текстом и целыми числами.

Эти значения получены из selectfaculty() и selectyear(), которые вы нам не показали, но предположительно они представляют собой целые строки таблицы.

Нельзя передать всю строкуобъект для функции, которая ожидает только одно значение столбца.

Вам нужно извлечь только значения факультета и года из этих строк и использовать их - возможно, что-то вроде этого?

for row3 in database.selecttopstudents(row['faculty'], row2['year']):
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...