API не принимает входные данные
Привет. Я создаю базу данных с помощью SQLite. Затем мне нужно создать API с функциями, которые возвращают информацию об этой базе данных. Затем мне нужно распечатать отчет. Однако, когда я пытаюсь вернуть ответ на запрос с помощью входных данных, ничего не возвращается. Я либо получаю пустой массив, либо получаю "<sqlite3.cursor object="" at="" 0x034d2d20="">". Если я помещаю в запрос значения по умолчанию, а не входные данные, то возвращаются значения. Есть ли у кого-нибудь идеи о том, как я могу это исправить, пожалуйста (см. ниже для получения дополнительной информации)? Заранее благодарю вас!
Что я уже пробовал:
Вот код, который у меня есть до сих пор:
Это код, который создает базу данных....
import sqlite3 with sqlite3.connect('homework3.sq') as db: cursor = db.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS COURSES( course_id INTEGER PRIMARY KEY, department varChar(100) NOT NULL, course_number varChar(100) NOT NULL, course_name varChar(100) NOT NULL, semester varChar(100) NOT NULL, sem_year varChar(20) NOT NULL, grade varChar(1) Not NULL)""") cursor.execute("""CREATE TABLE IF NOT EXISTS PREREQUISITE( course_id INTEGER PRIMARY KEY, prereq1 Numeric(4) NOT NULL, prereq2 Numeric(4) NOT NULL, ID REFERENCES COURSES("course_id") )""") cursor.execute("""INSERT INTO COURSES (department, course_number, course_name, semester, sem_year, grade) VALUES /*Sample Kpop Boy Bands- Present*/ ('MATH', '1190', 'Calculus I', 'Summer', '2018', 'A'), ('CSE', '1322', 'Programming and Problem Solving', 'Fall', '2018', 'B'), ('CSE', '1322L', 'Programming and Problem Solving Lab', 'Fall', '2018', 'A'), ('CS', '3305', 'Data Structures', 'Spring', '2019', 'A'), ('CS', '3503', 'Computer Organization and Architecture', 'Spring', '2019', 'A'), ('MATH','2202', 'Calculus II', 'Spring', '2019', 'B'), ('MATH', '2345', 'Discrete Mathematics', 'Fall', '2018', 'A'), ('CS', '3410', 'Introduction to Database Systems', 'Spring', '2020', 'A'), ('SWE', '3313', 'Introduction to Software Engineering', 'Spring', '2020', 'A'), ('CSE', '3801', 'Professional Practices and Ethics', 'Spring', '2020', 'A'), ('CS', '3502', 'Operating Systems', 'Fall', '2020', 'B'), ('CS', '4720', 'Internet Programming', 'Fall', '2020', 'A');""") cursor.execute("""INSERT INTO PREREQUISITE(prereq1,prereq2) VALUES (0,0), (0,0), (0,0), (2,3), (2,3), (1,0), (0,0), (2,3), (2,3), (2,3), (4,5), (4,8)""") db.commit()
Этот код находится в файле API. Этот код работает нормально:
def infoA(): return cursor.execute("SELECT * FROM COURSES WHERE sem_year = 2018 AND semester = 'Fall'")
Но если я попытаюсь добавить параметры так, чтобы функция могла принимать входные данные (как показано ниже), я не получу ответа:
def infoB(year, sem): return cursor.execute("SELECT * FROM COURSES WHERE sem_year = ? AND semester = ?", [year, sem])
Вот также файл отчета:
import API # print line to dive results print("=" * 111) template = "|{:<5} | {:15} | {:15}| {:40} | {:10}|{:5}| {:>5}|" # Writes the instructions on how to format column title # writes the first column of the report by writing that column one is row = template.format("ID", "Department", "Course Number", "Course Name", "Semester", "Year", "Grade") print(row) # print line to dive results print("=" * 111) # Gets function from API. When I run this function I get this: "[]" info = API.infoB(2018, 'FALL') # If I run this, it will return information # info = API.infoA() # If I run this using infoB, I get "<sqlite3.Cursor object at 0x034D2D20>" # print(infoB.fetchall()) for data in info: id = data[0] depart = data[1] num = data[2] name = data[3] sem = data[4] class_year = data[5] class_grade = data[6] print(template.format(id, depart, num, name, sem, class_year, class_grade)) # print line to dive results print("=" * 111)