Python 如何在烧瓶中进行迁移?

Python 如何在烧瓶中进行迁移?,python,flask,Python,Flask,我需要创建数据库并进行迁移。我在这段视频中发现了如何做到这一点。我在那个视频中做了所有类似的事情,但不幸的是,它不起作用(当我运行app.py db migrate时,它告诉我在模式中没有检测到任何更改,在数据库文件中,链接到它的只是一个表alembic_版本),我不知道为什么。如何修复此错误 My models.py文件 from app import db class User(db.Model): id = db.Column(db.Integer, nullable=False

我需要创建数据库并进行迁移。我在这段视频中发现了如何做到这一点。我在那个视频中做了所有类似的事情,但不幸的是,它不起作用(当我运行app.py db migrate时,它告诉我在模式中没有检测到任何更改,在数据库文件中,链接到它的只是一个表alembic_版本),我不知道为什么。如何修复此错误

My models.py文件

from app import db
class User(db.Model):
    id = db.Column(db.Integer, nullable=False, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    firstname = db.Column(db.String(64),nullable=False)
    lastname = db.Column(db.String(64),nullable=False)
    password = db.Column(db.String(64),nullable=False)
    location = db.Column(db.String(64),nullable=False)

    def __repr__(self):
        return '<User {}>'.format(self.id)

class Location(db.Model):
    id = db.Column(db.Integer, nullable=False, primary_key=True)
    name = db.Column(db.String(64), nullable=False)
    def __repr__(self):
        return '<Location {}>'.format(self.id)

class AnnouncementType(db.Model):
    id = db.Column(db.Integer, nullable=False, primary_key=True)
    description = db.Column(db.String(64),nullable=False)
    def __repr__(self):
        return '<AnnouncementType {}>'.format(self.id)

class Announcement(db.Model):
    id = db.Column(db.Integer, nullable=False, primary_key=True)
    authorid = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    name = db.Column(db.String(64),nullable=False)
    description = db.Column(db.Text,nullable=False)
    pub_date = db.Column(db.String(11),nullable=False)
    location = db.Column(db.Integer,db.ForeignKey('Location.id'),nullable=False)
    announcement_type = db.Column(db.Integer,db.ForeignKey('AnnouncementType.id') ,nullable=False)
    def __repr__(self):
        return '<Announcement {}>'.format(self.id)
从应用程序导入数据库
类用户(db.Model):
id=db.Column(db.Integer,nullable=False,primary\u key=True)
username=db.Column(db.String(64),index=True,unique=True)
firstname=db.Column(db.String(64),nullable=False)
lastname=db.Column(db.String(64),nullable=False)
password=db.Column(db.String(64),nullable=False)
location=db.Column(db.String(64),nullable=False)
定义报告(自我):
返回“”。格式(self.id)
类位置(db.Model):
id=db.Column(db.Integer,nullable=False,primary\u key=True)
name=db.Column(db.String(64),null=False)
定义报告(自我):
返回“”。格式(self.id)
课程公告类型(db.Model):
id=db.Column(db.Integer,nullable=False,primary\u key=True)
description=db.Column(db.String(64),nullable=False)
定义报告(自我):
返回“”。格式(self.id)
课程公告(db.Model):
id=db.Column(db.Integer,nullable=False,primary\u key=True)
authorid=db.Column(db.Integer,db.ForeignKey('user.id'),null=False)
name=db.Column(db.String(64),null=False)
description=db.Column(db.Text,null=False)
pub_date=db.Column(db.String(11),nullable=False)
location=db.Column(db.Integer,db.ForeignKey('location.id'),nullable=False)
announcement\u type=db.Column(db.Integer,db.ForeignKey('AnnouncementType.id'),nullable=False)
定义报告(自我):
返回“”。格式(self.id)
我的app.py文件

from flask import Flask, render_template, request, redirect 
from config import Config 
from flask_script import Manager 
from flask_sqlalchemy import SQLAlchemy 
from flask_migrate import Migrate,MigrateCommand 
from datetime import datetime



    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///lab.db'
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    app.config.from_object(Config)
    db = SQLAlchemy(app)
    migrate = Migrate(app, db)
    manager = Manager(app)
    manager.add_command('db',MigrateCommand)
    
    @app.route('/')
    def start():
        return "Empty page"
    
    
    @app.route('/api/v1/hello-world-16')
    def greeting():
        return "Hello World 16"
    
    
    @app.route('/film', methods=['POST', 'GET'])
    def film():
       return "<h1>Old version</h1>"
    
    
    if __name__ == "__main__":
        manager.run()
从flask导入flask,呈现\u模板,请求,重定向
从配置导入配置
从脚本导入管理器
从flask_sqlalchemy导入sqlalchemy
从迁移导入迁移,迁移命令
从日期时间导入日期时间
app=烧瓶(名称)
app.config['SQLALCHEMY\u DATABASE\u URI']='sqlite:///lab.db'
app.config['SQLALCHEMY\u TRACK\u MODIFICATIONS']=False
app.config.from_对象(config)
db=SQLAlchemy(应用程序)
迁移=迁移(应用程序,数据库)
经理=经理(应用程序)
manager.add_命令('db',MigrateCommand)
@应用程序路径(“/”)
def start():
返回“空页”
@app.route('/api/v1/hello-world-16')
def问候语():
返回“Hello World 16”
@app.route('/film',methods=['POST','GET'])
def胶片():
返回“旧版本”
如果名称=“\uuuuu main\uuuuuuuu”:
manager.run()

是否先运行init命令
python app.py db init
?是的。它使用迁移创建了文件夹。您是否先运行init命令
python app.py db init
?是的。它创建了带有迁移的文件夹。