You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastAPI中使用Alembic首次迁移未生成业务表问题排查

排查Alembic首次迁移只生成空脚本的问题

1. 没在env.py里导入业务模型

Alembic得能识别你的SQLAlchemy模型才会生成对应表结构,必须在env.py里导入所有业务模型(比如你的Task模型),或者直接导入包含模型的整个模块。

举个修正例子:
在env.py的run_migrations_online函数附近加这段:

# 换成你自己的模型模块路径
from app.models import Task
# 要是模型多,直接导入整个模块也行
# from app import models

要是模型文件不在默认路径里,还得给Python加项目路径:

import sys
from pathlib import Path
sys.path.append(str(Path(__file__).parent.parent))

2. database.py里模型没绑定正确的Base类

你所有业务模型(比如Task)必须继承database.py里定义的那个Base类,不然Alembic认不出来。

检查一下:

# database.py里的Base定义
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

# Task模型得继承这个Base
from database import Base
class Task(Base):
    __tablename__ = "task"
    id = Column(Integer, primary_key=True, index=True)
    # 其他字段...

3. env.py里没指定正确的元数据

env.py里的target_metadata得设成你模型Base的metadata,不能用默认的None。

改一下env.py:

# 导入你database.py里的Base
from database import Base
target_metadata = Base.metadata

别留着默认的target_metadata = None。

4. 迁移命令没执行对

得在项目根目录下跑正确的命令:

alembic revision --autogenerate -m "initial migration"

要是之前已经生成过空脚本,得先删了对应的版本文件,再重新跑命令。

5. 数据库连接配置不匹配

检查alembic.ini里的sqlalchemy.url和database.py里用的数据库URL是不是完全一样,Alembic得连同一个数据库才行。

比如alembic.ini里的配置:

sqlalchemy.url = postgresql://user:password@localhost/dbname

要和database.py里的引擎URL完全一致。


内容的提问来源于stack exchange,提问作者Lana YC.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 11:00:02