在使用 pymssql 进行 n 次迭代后进行输入确认的 For 循环

For Loop with input confirmation after n iterations with pymssql

我正在用字典更新数据库 table,代码如下:

cursor = conn.cursor()
for key in dRt:                          
    x = dRt[key]                          
    sql = 'UPDATE table SET R = %s WHERE %s = ID'
    cursor.execute(sql, (x, key))
conn.commit()
conn.close()

我的字典有几千个词条。是否可以在代码中添加一部分,询问在将 1000 行写入数据库后是否应该继续?

我试过这样的事情:

cursor = conn.cursor()
counter = 0
for key in dRt:                         
    x = dRt[key]                         
    sql = 'UPDATE table SET R = %s WHERE %s = ID'
    if counter == 1000:
        break
    eingabe = input("Beenden? Enter drücken!\n")
    cursor.execute(sql, (x, key))
conn.commit()
conn.close()

但这不能正常工作。

根据计数器有条件地初始化输入应该可行。初始化输入后,您还应该将计数器重置为 0。

cursor = conn.cursor()
counter = 0
for key in dRt:
    counter += 1                         
    x = dRt[key]                         
    sql = 'UPDATE table SET R = %s WHERE %s = ID'
    if counter == 1000:
        input("Beenden? Enter drücken!\n")
        counter = 0
cursor.execute(sql, (x, key))
conn.commit()
conn.close()

在循环中有一个input语句是可以的,但是执行会停止直到输入一些东西。然后您必须检查输入的内容以确定是否要继续:

cursor = conn.cursor()
sql = 'UPDATE table SET R = %s WHERE %s = ID' # moved out of the loop
counter = 0
for key in dRt:
    counter += 1                         
    x = dRt[key]                                 
    cursor.execute(sql, (x, key))     # moved higher in the loop
    if counter == 1000:               # now we have done the next 1000 updates
        reply = input("Beenden? Enter drücken!\n")
        if reply == '':
            break # anything else entered than just enter, for example "geh", and we continue
        counter = 0
conn.commit()
conn.close()