调用mysql truncate或drop时,Python测试会挂起

时间:2013-09-09 13:42:05

标签: python mysql mysql-python pycharm

使用Windows 7,XAMPP,Mysql,MySQLdb python连接器和python 2.7。

我正在使用unittest模块为我的第一个“真实”应用程序开发测试。在这个测试环境中,我首先截断每个表,并在每次测试后再次截断所有表。问题是测试在尝试截断时保持挂起。它不会返回错误或任何它只是变得无响应的东西(即使使用CTRL-C或CTRL-Z)。这是我首先尝试的解决方案:

def clear():
    query = ["truncate cliente", "truncate pagamentos", "truncate vendidos", "truncate produtos"]
    for q in query:
        cur.execute(q)
    con.commit()
我已经将tearDown()调用清除了。然后我尝试了here提出的解决方案,但遇到了同样的问题。

接下来,我尝试了this one,这是代码:

def clear():
    query = ["cliente", "pagamentos", "vendidos", "produtos"]
    for q in query:
        cur.execute("CREATE TABLE "+q+"_new LIKE "+q)
        cur.execute("RENAME TABLE "+q+" TO "+q+"_old, "+q+"_new TO "+q)
        cur.execute("DROP TABLE "+q+"_old")
    cur.commit()

现在,事情变得有些奇怪了。有时候它会像第一个一样挂起,有时它会引发一种挤压,“pagamentos_new”已经存在。当我检查数据库时,pagamentos_old和pagamentos_new都在那里......这让我难过......我不知道现在该做什么。我尝试使用命令行和PyCharm内部运行。我仍然会遇到同样的错误。

我也尝试过使用py.test,但我得到了同样的错误。

0 个答案:

没有答案