【问题标题】:Nested Loops in SQL with SELECT Statements with Python使用 Python 使用 SELECT 语句的 SQL 中的嵌套循环
【发布时间】:2019-03-13 16:13:20
【问题描述】:

刚接触编程并试图找出一个任务。我必须用 Python 做一个只有 select 语句(没有 join 语句)的嵌套循环。有点不知所措如何做到这一点。

以下是我一直在使用的代码。但是在他们说没有定义名称 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)

【问题讨论】:

  • 为什么不使用只在 sql 中的嵌套查询?

标签: python mysql loops


【解决方案1】:

正如错误所说,未定义 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

【讨论】:

    【解决方案2】:

    我会尽我所能回答您的问题。 course_no 确实没有定义,因为它包含在游标中。尝试再次遍历光标,但这次是 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 2015-08-02
      • 2013-11-01
      • 2019-09-05
      • 1970-01-01
      • 2018-11-23
      相关资源
      最近更新 更多