您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Flask-Migrate不创建表

Flask-Migrate不创建表

当你调用migrate命令Flask-Migrate(或实际上在其下的Alembic)时,它将查看你的命令models.py并将其与数据库中的实际值进行比较。

你的迁移脚本为空的事实表明,你已通过Flask-Migrate无法控制的另一种方法(可能是通过调用Flask-sqlAlchemy的方法)更新了数据库以匹配你的模型db.create_all()

如果你的数据库中没有任何有价值的数据,请打开Python Shell调用db.drop_all()以清空它,然后再次尝试自动迁移。

更新:我在这里安装了你的项目,并确认迁移对我来说工作正常:

(venv)[miguel@miguel-linux nhs-listpull]$ ./run.py db init
  Creating directory /home/miguel/tmp/mark/nhs-listpull/migrations...done
  Creating directory /home/miguel/tmp/mark/nhs-listpull/migrations/versions...done
  Generating /home/miguel/tmp/mark/nhs-listpull/migrations/script.py.mako...done
  Generating /home/miguel/tmp/mark/nhs-listpull/migrations/env.pyc...done
  Generating /home/miguel/tmp/mark/nhs-listpull/migrations/env.py...done
  Generating /home/miguel/tmp/mark/nhs-listpull/migrations/README...done
  Generating /home/miguel/tmp/mark/nhs-listpull/migrations/alembic.ini...done
  Please edit configuration/connection/logging settings in
  '/home/miguel/tmp/mark/nhs-listpull/migrations/alembic.ini' before
  proceeding.
(venv)[miguel@miguel-linux nhs-listpull]$ ./run.py db migrate
INFO  [alembic.migration] Context impl sqliteImpl.
INFO  [alembic.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate] Detected added table 'list_type'
INFO  [alembic.autogenerate] Detected added table 'job'
  Generating /home/miguel/tmp/mark/nhs-
  listpull/migrations/versions/48ff3456cfd3_.py...done

尝试重新签出,我认为你的设置正确。

确保将模型导入manage.py文件(或带有迁移实例的文件)中。即使没有显式使用模型,也必须将模型导入文件中。Alembic需要这些导入来迁移并在数据库中创建表。例如:

# ... some imports ...
from api.models import User, Bucketlist, BucketlistItem # Import the models

app = create_app('dev')
manager = Manager(app)
migrate = Migrate(app, db)

manager.add_command('db', MigrateCommand)

# ... some more code here ...

if __name__ == "__main__":
    manager.run()
    db.create_all()
Python 2022/1/1 18:24:37 有176人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶