【问题标题】:Flask migrate doesn't detect models.py烧瓶迁移未检测到 models.py
【发布时间】:2018-12-09 04:45:42
【问题描述】:

我正在尝试在我的工作目录中运行flask migrate db,但它不使用我在models.py 中定义的模型 这是代码。

models.py

import sys
sys.path.append("../")

from Talks2 import db

class Talk(db.Model):
    presenter = db.Column(db.Text())
    talkType = db.Column(db.Text())
    desc = db.Column(db.Text(), primary_key=True)
    link = db.Column(db.Text())
    time = db.Column(db.Integer())

    def __repr__(self):
        return "Presenter: {}\nType: {}\nDescription:\n{}\nLink:  {}".format(self.presenter,self.talkType,self.desc,self.link)

routes.py

import sys
sys.path.append("../")

from flask import Flask, request, render_template
from Talks2 import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app,db)

from Talks2 import models

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/add", methods=["POST"])
def add():
    person = request.form["presenter"]
    ttype = request.form["type"]
    desc = request.form["desc"]
    link = request.form["link"]
    print(person, file=sys.stderr)
    print(ttype, file=sys.stderr)
    print(desc, file=sys.stderr)
    print(link, file=sys.stderr)
    return render_template("index.html")

if __name__ == "__main__":
    app.run()

我需要更改什么才能正确生成脚本?

【问题讨论】:

  • 命令是flask db migrate 而不是flask migrate db。如果这不是问题,那么查看实际命令的输出以及生成的版本文件会有所帮助。

标签: python flask sqlite flask-sqlalchemy alembic


【解决方案1】:

您正在从Talks2.py 导入db 并在models.py 文件中再次在routes.py 中再次声明。

您还没有分享Talks2.py 文件的代码。我怀疑的是您多次声明 appdb 对象并将其替换为其他对象。

只要以正确的方式导入,你的模型就会被烧瓶检测到。

最简单的解决方案是在Talks2.py中声明appdb,然后在models.py中同时导入,然后在models.py中从models.py导入appdb。这将解决您的问题。

另外,它应该是flask db migrate 而不是flask migrate db

有关更多信息,请参阅以下命令:

创建迁移存储库:

flask db init

生成迁移脚本(请务必查看和编辑,因为 Alembic 目前无法检测到您对模型所做的每一项更改)

flask db migrate

将迁移应用到数据库

flask db upgrade

要查看所有可用的命令,请运行以下命令:

flask db --help

更多信息请参考this official doc

如果这没有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多