9. Flask-Migrate¶
项目进行当中,经常会改动数据库,如何安全有效即使的跟踪数据库的变动,Flask-Migrate应运而生。
有了Flask-Migrate,我们就可以不用手写一行SQL代码就可以直接创建,修改数据库。
据传Flask-Migrate插件使用过程当中可能会有bug,在使用的时候要小心下,当今时代,礼崩乐坏,除了亲娘,别的什么都可能有假呀!
9.2. 使用¶
Flask-Migrate的使用大致分两部分:
- 在程序中使用插件
- 在命令行中,借助
Flask-Script
进行数据库的迁移操作
9.2.1. 在代码中使用Flask-Script¶
代码中使用Flask-Script插件只需要两步就可以:
from flask import Flask # 导入个包包
from flask_sqlalchemy import SQLAlchemy
# flask_migrate 需要借助 flask_script
from flask_script import Manager
# 第一步:导入
from flask_migrate import Migrate, MigrateCommand
app = Flask(__name__)
# 用户tuling,密码123456, 数据库位置/访问端口/数据库名=127.0.0.1:3306/tuling
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://tuling:123456@127.0.0.1:3306/tuling'
db = SQLAlchemy(app)
manager = Manager(app)
# 第二步:初始化
Migrate(app=app, db=db)
# 第三步:添加相应命令
manager.add_command('db', MigrateCommand)
class Teacher(db.Model):
__tablename__ = 'teacher'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(50), unique=True)
email = db.Column(db.String(100))
pwd = db.Column(db.String(50))
def __str__(self):
return self.name
if __name__ == "__main__":
manager.run()
9.2.2. 使用命令行进行数据库迁移¶
使用命令行对数据库进行迁移分成三部分:
python xxx.py db init
: 初始化数据库python xxx.py db migrate
: 创建迁移python xxx.py db upgrade
: 执行迁移 期间当前文件夹下会生成migrations
文件夹,具体迁移文件和信息会自动放入这个文件夹中。
- 执行迁移前文数据库内容:
- 执行初始化命令
- 准备迁移
- 执行迁移
- 钱以后数据库