教程集 www.jiaochengji.com
教程集 >  Python编程  >  Python 框架  >  正文 flask数据库迁移有什么作用

flask数据库迁移有什么作用

发布时间:2021-01-09   编辑:jiaochengji.com
教程集为您提供flask数据库迁移有什么作用等资源,欢迎您收藏本站,我们将为您提供最新的flask数据库迁移有什么作用资源

使用Flsak-Migrate数据库迁移框架,可以保证数据库结构在发生变化时,改变数据库结构不至于丢失数据库的数据。使用其进行数据库进行数据库的迁移,主要分为三个步骤:

1 创建数据仓库

首先通过mysql数据库命令行新建数据库test.

 然后我们要在test.py中布置相关环境:

import os,json
from flask import Flask, render_template, session, redirect, url_for
from flask_script import Manager,Shell
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate,MigrateCommand
app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:root@127.0.0.1/test?charset=utf8'
#app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

manager = Manager(app)
db = SQLAlchemy(app)
migrate = Migrate(app,db)

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    age = db.Column(db.String(64))
    ....
    def __repr__(self):
        return '<User %r>' % self.username

def make_shell_context():
    return dict(app=app, db=db, User=User)

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

这里我们引入了Manager模块用来使启动flask时支持命令行。首先,分别引入了migrate模块和Manager相关模块;创建了一个manager对象,以支持自定义命令的配置;创建一个Migrate对象并关联对应的应用程序类对象app和数据库管理类对象db;最后一行将MigrateCommand命令加入到manager对象中,这样就可以在命令行中进行数据库迁移的相关命令.

需要注意的是,引入Manager支持启动应用程序的命令行时,我们还需要修改app的run语句,改为:

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

接下来我们使用命令行模式创建一个迁移的仓库:

>>> python test.py db init

'db'是在manager.add_command('db',MigrateComand)这句中我们声明的命令行对象名称,init是Migrate命令,表示初始化迁移仓库,运行完成之后,会在当前目录下创建一个migrations的文件夹,用于进行迁移的数据库脚本都放在这里.

2 创建迁移脚本

使用migarate子命令来创建数据库迁移脚本,在此之前我们先改动一下数据库的模型来验证迁移是否成功,我们在User模型中添加age属性:

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    age = db.Column(db.String(64))我们检查下是否更新成功:
python test.py db migrate

3 数据库更新

python test.py db upgrade

成功进行了更新。

Url:http://flask-migrate.readthedocs.io/en/latest/。

您可能感兴趣的文章:
flask数据库迁移是什么意思
flask数据库迁移有什么作用
盘点Flask常用扩展包
轻量级web框架Flask是什么
Flask框架是什么?带你安装运行第一个Flask程序
Flask与Django框架的区别
不停机状态下使用Django创建索引
快速上手flask
flask什么意思中文翻译
flask怎么发音

[关闭]
~ ~