fastapi:alembic: alembic revision --autogenerate 命令执行后没有找到数据表?

一,问题和原因

alembic revision --autogenerate -m "create user table"


这个命令执行后没有效果,没有找到数据表,原因是?

Alembic 的核心配置文件是 migrations/env.py(或 alembic/env.py)。你需要确保在这里显式导入了你的模型或 Base 类。
  • 找到这一行:在 env.py 中找到 target_metadata = None
  • 修改它:导入你的 SQLAlchemy Base 对象,并将它赋值给 target_metadata
python
# 示例:在 env.py 顶部导入你的 Base 和模型
from my_project.models import Base  # 修改为你的实际项目路径
import my_project.models.user       # 必须确保模型类被 Python 加载过

# 找到 target_metadata 并修改
target_metadata = Base.metadata
 

仅仅导入 Base 有时还不够。
如果你的
User 模型在独立的文件中,且没有在导入 Base 的地方被引用,Python 解释器在运行时就不会去加载 User 类,Base.metadata 依然是空的。
因此,建议在
env.py 中也隐式或显式地导入一下具体的模型文件(如 import my_project.models.user)。

二,解决:

两个解决办法:

1,在env.py中导入具体的模型文件:

 例:在.eny中增加

import app.models.users
import app.models.products

2,在models目录下的__init__.py中引入具体的模型文件:

# app/models/__init__.py
from .products import Product
from .users import User

上面两个方法中执行一个就有效 

 

posted @ 2026-06-25 16:19  刘宏缔的架构森林  阅读(9)  评论(0)    收藏  举报