Я пытаюсь использовать studentID, чтобы получить их имя и фамилию из одной таблицы, затем получить результаты для одной из своих домашних работ, используя HomeworkID, и отобразить результаты в виджете списка с помощью tkinter. Однако прежде чем он может быть отображен, конечно, мне сначала нужно иметь возможность получить данные. Это то, что я до сих пор:
def viewresults (self, sethw):
print (self.Homework_To_Set.get())
#resultslist = []
conn = sqlite3.connect('MyComputerScience.db')
c = conn.cursor()
homeworkID = c.execute("SELECT HWID FROM HomeworkInfo WHERE HomeworkName = ?", (self.Homework_To_Set.get(), )).fetchone()
studentsnamecheck = c.execute("SELECT StudentID FROM HomeworkSet WHERE HWID = ?", ((homeworkID[0], ))).fetchall()
if len(studentsnamecheck) == 0:
self.View_Results.insert(END, "No one has completed this homework!")
else:
for x in studentsnamecheck:
c.execute("SELECT FName || ' ' || SName FROM users WHERE UserID = ?", (str(x), ))
res1 = (c.fetchall())
for i in (studentsnamecheck):
result_collect = c.execute("SELECT Results FROM HomeworkSet WHERE StudentID = ? AND HWID = ?", ((str(i)), self.Homework_To_Set.get() ))
var_insert_results = ((res1), (result_collect))
self.View_Results.insert(END, str(var_insert_results))
И это текущий вывод:
([], <sqlite3.Cursor object at 0x000001F40E1809D0>)
([], <sqlite3.Cursor object at 0x000001F40E1809D0>)
([], <sqlite3.Cursor object at 0x000001F40E1809D0>)
([], <sqlite3.Cursor object at 0x000001F40E1809D0>)
([], <sqlite3.Cursor object at 0x000001F40E1809D0>)
([], <sqlite3.Cursor object at 0x000001F40E1809D0>)
([], <sqlite3.Cursor object at 0x000001F40E1809D0>)
Это схема для баз данных:
c.execute("""CREATE TABLE IF NOT EXISTS users (
UserID INTEGER PRIMARY KEY AUTOINCREMENT,
FName text,
SName text,
username text,
password text,
userType text,
ClassName text);""")
c.execute("""CREATE TABLE IF NOT EXISTS ClassInfo (
ClassID INTEGER PRIMARY KEY AUTOINCREMENT,
ClassName text,
Teacher text);""")
c.execute("""CREATE TABLE IF NOT EXISTS HomeworkInfo (
HWID INTEGER PRIMARY KEY,
HomeworkName text);""")
c.execute("""CREATE TABLE IF NOT EXISTS HomeworkSet (
HWID integer,
StudentID text,
Results text,
FOREIGN KEY (StudentID) REFERENCES users(UserID)
FOREIGN KEY (HWID) REFERENCES HomeworkInfo(HWID));""")