1. 程式人生 > 其它 >flask-migrate遷移資料檢測不到模型,無法新建表

flask-migrate遷移資料檢測不到模型,無法新建表



flask專案目錄示例:

project/  
  App/
    __init__.py
ext.py models
/ __init__.py base.py users.py posts.py ... routes/ __init__.py home.py account.py dashboard.py ... templates/ base.html post.html ... services
/ __init__.py google.py mail.py ...
runserver.py README.md venv
requirements/
dev.txt
prod.txt

此文先上專案目錄結構,跟著專案來看問題。

本文需要解決的問題是1.明確專案檔案佈局 2.遷移檔案檢測不到model,現象是migrations/versions目錄下為空

1. ext.py

// App/ext.py 

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

為什麼需要一個單獨的檔案來例項化【SQLAlchemy】呢?

因為例項db在以後的models和runserver.py等多處會引用,避免迴圈引用。

2. __init__.py

// App/__init__.py
from
flask import Flask from app import config from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from app.models import * from app.ext import db migrate = Migrate() def create_app(): app = Flask(__name__
) app.config.from_object(config) db.init_app(app) migrate.init_app(app, db) return app

這裡比較重要的是from app.models import *,如果不匯入models檢測不到相應的模型

3. runserver.py

from app import create_app

app = create_app()

app.run()

4. 遷移步驟

flask db init
flask db migrate -m 'Intial ....'
flask db upgrade

有一些歷史文章是結合flask-script去解決的,現在不推薦了。

因為flask-script已經遷移到CLI,具體見https://www.cnblogs.com/lynsyklate/p/7693169.html