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
上面两个方法中执行一个就有效
浙公网安备 33010602011771号