Вложенные циклы в SQL с инструкциями SELECT с помощью Python - PullRequest
0 голосов
/ 13 марта 2019

новичок в программировании и попытка выяснить назначение.Я должен сделать вложенный цикл только с утверждениями выбора (без операторов соединения) с Python.В некоторой растерянности относительно того, как это сделать.

Ниже приведен код, который я использовал.Но продолжайте получать ошибку, когда говорят, что имя course_no не определено.

Извините, если это вопрос n00b!

query = ("SELECT first_name, last_name FROM instructor")
query2 = ("SELECT course_no, section_no FROM section")

try:
    cursor.execute(query)

    print("Result set returned")

    for (first_name, last_name) in cursor:
        print(first_name + " " + last_name)

        for (first_name, last_name) in cursor:
            cursor.execute("SELECT course_no, section_no FROM section")
            print(course_no + " " + section_no)
    cursor.close()
except mysql.connector.Error as err:
    print(err)

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Я постараюсь ответить на ваш вопрос как можно лучше. Имя_курса действительно не определено, поскольку оно заключено в курсор. Попробуйте перебрать курсор снова, но на этот раз для course_no и section_no. Также я предлагаю вам использовать разные курсоры для каждого запроса, так как в следующих циклах курсор больше не имеет значений внешних циклов. Демонстрация некоторого кода:

try:
    cursor1.execute(query)

    print("Result set returned")

    for (first_name, last_name) in cursor1:
        print(first_name + " " + last_name)

        cursor2.execute("SELECT course_no, section_no FROM section")
        for (course_no, section_no) in cursor2:
            print(course_no + " " + section_no)
        cursor2.close()
    cursor1.close()
except mysql.connector.Error as err:
    print(err)
0 голосов
/ 13 марта 2019

Поскольку ошибка говорит, что first_name и last_name не определены.Значения поступают в виде кортежей, так что вы можете получить доступ к значению индекса

for row in cursor:
    print(row[0],row[1]) # first_name, last_name

Также вам нужно получить результаты, сохраненные в переменной для

cursor.execute("SELECT course_no, section_no FROM section")

и не называйте cursor дважды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...