我有以下一段代码我一直在努力,我只能为“输入”表的第一行做技巧。我知道嵌套循环上的两个游标之间显然没有任何关系,但我尝试了嵌套的while-for循环并获得了相同的结果。我正在使用python 3.4。
这个想法是将表输入中的行与表comparetable中的行进行比较,如果公式给出的结果小于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()
有什么想法吗?希望是一件愚蠢的事。我已经检查了这个post,但我仍然不知道如何解决它。
答案 0 :(得分:1)
for rowx in db_cursor2:
“第一次耗尽”db_cursor2
- 没有任何东西可以在第二次和之后的循环中循环。
因此,您必须在内部循环db_cursor2.execute("SELECT * FROM comparetable")
之前将for row in db_cursor:
移至内部外部循环for rowx in db_cursor2:
,以便后者将< / strong>有一行一遍又一遍地循环! - )