首页 > 解决方案 > 如何停止这个python函数?

问题描述

如何停止此功能?while即使循环以iforelse语句结束,该函数也会运行。

我尝试添加break,但它仍然无法正常工作。

def proallocate():
    q = True
    conn = sqlite3.connect('database.db')
    cur = conn.cursor()
    pid = cur.execute("SELECT project_id FROM Upload WHERE status= ?", ("NULL",))
    while q:
        for pd in pid:
            a = str(pd)
            projectid = re.sub('[\(\),\{\}<>]', '', a)
            url = "localhost:8888/"+projectid+""
            print(url)
            req = requests.Session()
            resp = req.get(url)
            soup = BeautifulSoup(resp.text, 'html.parser')
            project_status_latest = soup.find_all('tr')[-1].get_text()
            if ("Project Ready" in project_status_latest):
                proid[0] = projectid
                q = False
                break
            else:
                cur.execute("UPDATE Upload SET status = ? WHERE project_id = ?", ("Reserved", projectid))
                conn.commit()             
    return projectid

预期的结果是,它应该从if语句中返回一个值,或者什么都不返回。

标签: python

解决方案


摆脱while循环。该for循环已经遍历了所有项目 ID,您不需要另一个循环。如果for循环没有找到匹配的项目,while循环将无限重复。


推荐阅读