VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • 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. 环境变量

export FLASK_APP=App.runserver

 

5. 迁移步骤

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

有一些历史文章是结合flask-script去解决的,现在不推荐了。

因为flask-script已经迁移到CLI,具体见https://www.cnblogs.com/lynsyklate/p/7693169.html

来源:https://www.cnblogs.com/zhengze/p/15475500.html


相关教程