安装
pip install flask-script
pip install Flask-Migrate
介绍Flask-Script
- Flask-Script:作用是通过命令的形式来操作Flask,例如通过命令跑一个开发版本的服务器,设置数据库,定时任务等。
- 直接在主
manager.py
中写命令,在终端只需要执行python manage.py command_name
就可以 - 如果吧命令集中在一个文件中,终端就需要输入一个父命令,比如
pyhton manage.py db init
介绍Flask-Migrate
- Flask-Migrate是一个为Flask应用处理
SQLAlchemy
数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts
对数据库进行操作。 - 采用
db.create_all
后期每次修改字段时候,不会自动映射到数据库中,必须删除表,然后从新运行db.create_all
才会从新映射。flask-migrate会在每次修改模型后,将修改的东西映射到数据库中。
flask-script使用
from flask_script import Manager
from db_script import DBManager
from app import app
manager = Manager(app)
@manager.command
def runserver():
print('启动')
# 将数据库相关操作,放在一起
manager.add_command('db', DBManager)
if __name__ == '__main__':
manager.run()
Flask-Migrate使用
python manage.py db init
:初始化一个迁移脚本的环境,只需要执行一次python manage.py db migrate
:将模型生成迁移文件,只要模型更改,就要执行改命令。python manage.py db upgrade
:将迁移文件真正映射到数据库中。
**注意:**将要映射的数据库模型,导入到manage.py
文件中,如果没有导入进去,就不会映射到数据库中中。
from app import app
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from exts import db
from models import DBMigrate # 需要倒入才能映射
# init migrate upgrade
# init 初始化迁移环境
# migrate 模型生成迁移文件
# upgrade 将文件映射到表中
# 模型 -》 迁移文件 -》 映射到表
# flask-script的使用
manager = Manager(app)
# 1.要使用flask-migrate必须绑定app和db
migrate = Migrate(app, db)
# 2.把MigrateCommand(数据库迁移)命令添加打manager
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
在命令面板执行,以下命令
python manage.py db init
python manage.py db migrate
python manage.py db upgrade
一定要注意,要将models
中的模型表导入,flask-migrate
才可以映射成功。