如何停止此python函数?

时间:2019-07-02 16:16:26

标签: python

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

我尝试添加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语句返回一个值,或者不返回任何值。

1 个答案:

答案 0 :(得分:0)

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