flask migrate迁移的简单使用

本文详细介绍了如何在Flask项目中使用SQLAlchemy进行数据库模型的创建与管理,通过Migrate实现数据库字段变更的无缝更新,避免了直接删除表的繁琐操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

使用models目的是为了将创建数据库模型的代码与主程序代码分离,migrate的作用就是在数据库字段改变时不用drop表直接做更新操作

新建 models.py  exts.py manage.py,程序入口 flask_test.py

 

manage.py

 

#-*-coding:utf-8-*-

from flask_script import Manager                
from flask_test import app                    #导入应用
#from db_script import db_manager
from flask_migrate import Migrate,MigrateCommand        #导入migrate相关的模块
from exts import db                          #导入db对象
from models import  *                      #从models导入数据库模型(数据库要创建的表)

migrate = Migrate(app,db)                  #初始化migrate对象,绑定app应用和db

manager = Manager(app)

manager.add_command('dbupgrade',MigrateCommand)        #把migratecommand命令添加到manager中,dbupgrade为自定义的名称

@manager.command
def runserver():
    app.run(host='192.168.132.130',debug=True)

manager.add_command('db',db_manager)

if __name__ == '__main__':
    manager.run()

 

 

exts.py

#-*-coding:utf-8-*-
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

 

models.py

 

#-*-coding:utf-8-*-

from exts import db

class User(db.Model):
    __tablename__  = 'user'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(100),nullable=False)
    password = db.Column(db.String(32),nullable=False )

class Article(db.Model):
    __tablename__ = 'article'          
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(100),nullable=False)
    content = db.Column(db.Text,nullable=False)
    author_id = db.Column(db.Integer,db.ForeignKey('user.id'))

    author = db.relationship('User',backref=db.backref('articles'))  

 

 

主程序文件flask_test.py

 

from flask import Flask,session
from exts import db
import config

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)                    #数据库初始化当前app

@app.route('/')
def index():
    return 'Hello World!'

if __name__ == '__main__':
    app.run(host='192.168.132.130',debug=True)

 

 

migrate执行

 注意:如果在次修改数据库模型,直接执行 migrate 后执行 upgrade即可

分类: flask

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值