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