gpt4 book ai didi

python - 使用 SQLAlchemy 在 Flask 中卡住 drop_all()

转载 作者:IT老高 更新时间:2023-10-28 22:25:26 26 4
gpt4 key购买 nike

我正在为 Flask 应用程序编写测试用例。

我有一个 setUp 方法,它在重新创建它们之前删除数据库中的表。它看起来像这样:

def setUp(self):
# other stuff...
myapp.db.drop_all()
myapp.db.create_all()
# db creation...

这适用于第一个测试,但在运行第二个测试之前它会在 drop_all 处卡住。

编辑:中断进程时的堆栈跟踪是这样的

  File "populate.py", line 70, in create_test_db
print (myapp.db.drop_all())
File ".../flask_sqlalchemy/__init__.py", line 864, in drop_all
self._execute_for_all_tables(app, bind, 'drop_all')
File ".../flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File ".../sqlalchemy/sql/schema.py", line 3335, in drop_all
....
File "/Library/Python/2.7/site-packages/MySQLdb/cursors.py", line 190, in execute
r = self._query(query)

有人知道如何解决这个问题吗?

最佳答案

Oki,可能还有其他解决方案,但现在,在搜索互联网后,我发现如果我在代码前添加 myapp.db.session.commit(),问题就会消失。我猜,某处事务正在等待提交。

def setUp(self):
# other stuff...
myapp.db.session.commit() #<--- solution!
myapp.db.drop_all()
myapp.db.create_all()
# db creation...

关于python - 使用 SQLAlchemy 在 Flask 中卡住 drop_all(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com