2016-01-23 142 views
-4

好吧,我不知道如何正确地问这个问题,但这里是我想要做的事:打破for循环,而不是停止while循环

#connect to db and stuff 
check_against = [] #list of strings 
while row is not None: 
    if row == None: 
    break 
    for i in range(0,len(row)): 
    x = row[i] 
    try: 
     print str(x) 
    except: 
     pass 
    for z in check_against: 
     if z == x: 
     #change alternate_id 
    if x == "": 
     # Change insert_into and stuff 
     if alternate_id != 0: 
     for x in range(len(insert_into)): #Do SQL things 
      print "updating" + str(alternate_id) 
      sql = """UPDATE `table` SET `%s` = '%s' WHERE `table`.`id` = %s""" % (insert_into[x],check_against[x],str(alternate_id)) 
     try: 
     cursor.execute(sql) 
     db.commit() 
     except: 
     db.rollback() 
     break #This break breaks the while loop 
    row = cursor.fetchone() 

我怎样才能让破不破while循环但打破循环? 感谢您的帮助。

+3

这正是你的代码已经做...其实你不能离开'while',因为'x'永远不会改变它。 – jonrsharpe

+0

我做错了吗?当我在实际代码中使用它时,它会打破while循环。 – Tygran

+0

@Tygran,你能提供所有的代码吗?因为它看起来像当前的实现打破了'for'循环,因为你想 – pivanchy

回答

0

首先,你不需要这个部分:

while row is not None: 
    if row == None: 
     break 

这部分没有任何意义,因为如果该行是没有的while循环将停止,因为条件while row is not None,请删除:

if row == None: 
    break 

您不需要此代码。

第二部分:如果break伤了你的while环路,请格式化你的代码在一个正确的方式,因为当前的代码看起来很奇怪

+0

我想我已经想通了。 break不会中断while循环,但问题在于我使用相同的光标执行sql,因为我从中获取行。谢谢你的帮助。我好蠢。 – Tygran

+0

不客气!问题是关于打破一个循环,我告诉如何解决这个问题 – pivanchy