zoukankan      html  css  js  c++  java
  • 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 . 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

  • 相关阅读:
    easyui datagrid fit 属性
    jQuery outerHeight() 方法
    从文件夹输入数据到控制台程序 c方式
    排序算法
    泛型算法
    string、char[]、char*、const char* 相互转换
    sizeof
    容器 forward_list
    sort
    printf & sprintf
  • 原文地址:https://www.cnblogs.com/zhengze/p/15475500.html
Copyright © 2011-2022 走看看