Python flask_sqlalchemy 利用sqlalchemy模型在mysql创建表错误

120 阅读1分钟

前言

利用flask_sqlalchemy 库创建api_log 日志表时,提示数据库中不存在该表 报错raise errorclass(errno, errval) sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, "Table 'bwblog.api_log' doesn't exist")

错误信息如下

raise errorclass(errno, errval) sqlalchemy.exc.ProgrammingError: (pymysql.err.ProgrammingError) (1146, "Table 'bwblog.api_log' doesn't exist")

问题分析

数据库迁移未执行

如果你已经定义了一个新的表模型,但在数据库中尚未创建该表,那么在尝试访问该表时就会出现这个错误。你需要确保执行了数据库迁移来创建新的表。

解决方法

使用 Flask-Migrate 进行迁移 Flask-Migrate 是一个用于数据库迁移的扩展,基于 Alembic,可以帮助你管理数据库的版本控制。

安装 Flask-Migrate
pip install flask-migrate
配置 Flask-Migrate

加入以下两行代码

app.py 文件代码:

from flask_migrate import Migrate
migrate = Migrate(app, db)
初始文件迁移
flask db init
创建迁移脚本
flask db migrate -m "Initial migration."
应用迁移
flask db upgrade

执行以上数据库迁移后重启项目