带有游标的嵌套for循环只能在python上获得第一个所需的结果

带有游标的嵌套for循环只能在python上获得第一个所需的结果,python,python-3.x,nested-loops,pypyodbc,Python,Python 3.x,Nested Loops,Pypyodbc,我有下面一段我一直在研究的代码,我只能对输入表的第一行执行这个技巧。我知道嵌套循环上的两个游标之间显然没有关系,但我尝试了嵌套while for循环,并获得了相同的结果。我正在使用python 3.4 其思想是将表格输入中的行与表格可比较中的行进行比较,如果公式给出的结果小于5,则打印给定表格的对应项ID row[0]&rowx[0],并将公式的结果打印到另一个名为output的新表格中。问题是它只对输入表的第一条记录有效 db_connection = pypyodbc.connect(con

我有下面一段我一直在研究的代码,我只能对输入表的第一行执行这个技巧。我知道嵌套循环上的两个游标之间显然没有关系,但我尝试了嵌套while for循环,并获得了相同的结果。我正在使用python 3.4

其思想是将表格输入中的行与表格可比较中的行进行比较,如果公式给出的结果小于5,则打印给定表格的对应项ID row[0]&rowx[0],并将公式的结果打印到另一个名为output的新表格中。问题是它只对输入表的第一条记录有效

db_connection = pypyodbc.connect(connection_str)
db_connection2 = pypyodbc.connect(connection_str)
db_connection3 = pypyodbc.connect(connection_str)

db_cursor = db_connection.cursor()
db_cursor2 = db_connection2.cursor()
db_cursor3 = db_connection3.cursor()

db_cursor.execute("SELECT * FROM input")
db_cursor2.execute("SELECT * FROM comparetable")

for row in db_cursor:
    for rowx in db_cursor2:
        idoriginal = row[0]
        idcomparable = rowx[0]
        result = formula(float(row[1]), float(row[2]), float(rowx[1]), float(rowx[2]))
        if result < 5:
            db_cursor3.execute("INSERT INTO output (id, idcomparable, result) VALUES (?, ?, ?)",(idoriginal,
                                idcomparable, result))
        db_cursor3.commit()
有什么想法吗?希望是一件愚蠢的事。我已经检查过了,但我仍然不知道如何解决它

db_游标2中的for rowx:第一次通过时排出db_游标2-第二次和以后通过外循环时没有任何内容可供循环


因此,您必须将db_cursor2.executeSELECT*从comparetable移动到db_cursor:中row的外部循环内部,就在db_cursor2:中rowx的内部循环之前,这样后者将有行要反复循环-

你能解释一下你的代码的问题吗?你如何初始化db_连接,db_连接2和db_连接3?我编辑了代码来回答第二个问题。其思想是将表格输入中的行与表格可比较中的行进行比较,如果公式给出的结果小于5,则打印给定表格的对应项ID row[0]&rowx[0],并将公式的结果打印到另一个名为output的新表格中。问题是它只对输入表的第一条记录有效。