使用flask-migrate和flask-script实现数据库修改
# 命令行管理文件:
# - 包含数据库迁移命令
# - 包含数据库修改命令
"""
from flask_migrate import Migrate, MigrateCommand
from flask_script import Shell, Manager
from models import app, db, User, Department
# 用来管理命令的对象, Manager用来跟踪所有名林不过并处理他们如何从命令行调用;
manager = Manager(app)
migrate = Migrate(app, db)
# 添加一条数据库迁移管理的命令
manager.add_command('db', MigrateCommand)
在命令行中执行:
python manager.py db init #创建迁移仓库
python manager.py db migrate "对这次迁移的说明" #生成迁移文件
python manager.py db upgrade # 将迁移文件映射的数据库中,最终改变数据库结构
python manager.py db history #查看迁移历史
python manager.py db downgrade base #返回base时数据库结构
用命令对数据库内容进行查询和添加
from flask_migrate import Migrate, MigrateCommand
from flask_script import Shell, Manager
from models import app, db, User, Department
# 用来管理命令的对象, Manager用来跟踪所有名林不过并处理他们如何从命令行调用;
manager = Manager(app)
migrate = Migrate(app, db)
# 添加一条数据库迁移管理的命令
manager.add_command('db', MigrateCommand)
# 添加一条命令, 可以显示所有的用户
@manager.command
def showUser():
"""显示所有的用户"""
users = User.query.all()
print(users[:5])
# 添加一条命令, 可以显示所有的用户
@manager.command
def showDepart():
"""显示所有的部门"""
deaprts = Department.query.all()
print(deaprts)
# 添加部门
@manager.option('-n', '--name', help="部门名称")
def add_depart(name):
try:
depart1 = Department(name=name)
db.session.add(depart1)
db.session.commit()
except Exception:
print("创建部门失败!")
else:
print("创建部门%s成功!" %(name))
if __name__ == "__main__":
# 准备
manager.run()