1.事件发生背景:
1.1已经使用Aerich迁移过一次模型,并且初始化了数据库操作;
1.2新增用户账号密码时的验证功能,需要创建新的模型对象,重新迁移;
1.3models.py与其他py文件存在循环调用情况;
util.py:
from models import UserDB, User
models.py:
from util import generate_token
2.问题分析:
2.1报错分析1:根据报错行代码的错误提示有两行代码错了,最直接的是tortoise.exceptions.ConfigurationError: Module "models" not found,直接提示了tortoise的配置文件里面诈骗不到models模块,但是加了项目名.models之后重新迁移还是报一样的错,说明不是模型文件的模块路径问题导致的;
2.2报错分析2:另外一行报错提示是说models.py与util.py存在循环调用情况,导致模块导入不了,
有可能是这原因,接下来解决方法着重从这方面入手;
3.解决方法:
3.1将util.py的导包“from models import UserDB, User”位置由代码顶部移到函数内部,这个叫延迟导入;
3.2删除迁移的包migration和pyproject.toml文件;
3.3重新运行迁移环境初始化命令:aerich init -t tortoise系统的迁移配置(比如aerich init -t setting.tortoise_config),初始化数据库命令aerich init-db,发现新增的模型对象迁移到数据成功!
4.总结:
综上所述,此次问题是由于文件之间的相互调用导致的Module "models" not found”以致Aerich迁移工具无法生成迁移命令进行迁移的根本原因。
667

被折叠的 条评论
为什么被折叠?



