在使用 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()
我正在用字典更新数据库 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()