在开发程序的过程中,你会发现有时需要修改数据库模型,而且修改之后还需要更新数据库。仅当数据库表不存在时,Flask-SQLAlchemy 才会根据模型进行创建。因此,更新表的唯一方式就是先删除旧表,不过这样做会丢失数据库中的所有数据。更加好的表示方法就是利用数据库迁移框架
官方网址 https://flask-migrate.readthedocs.io/en/latest/
下面来运用 flask-migrate迁移框架
windows中安装该模块
pip install flask-migrate
(1)首先建立数据库迁移脚本(采用这个的话会和 create_all()一样,会删除表中的内容,但是下次更新的时候就可以不用重现创建了,在命令行窗口中采用)
flask db init
Creating directory /home/flask/flask1/migrations ... done Creating directory /home/flask/flask1/migrations/versions ... done Generating /home/flask/flask1/migrations/env.pyc ... done
运行成功之后会在的自己项目文档中生成一个 migrateions 脚本文件
(2)跟新数据表中的内容
1:迁移数据表,生成迁移脚本 (但是这个时候还没有修改保存到数据库当中)
flask db migrate
INFO [alembic.runtime.migration] Context impl MySQLImpl.INFO [alembic.runtime.migration] Will assume non-transactional DDL.INFO [alembic.autogenerate.compare] Detected removed table u'sys_user'INFO [alembic.autogenerate.compare] Detected removed table u'sys_role_privilege'
(2)更新数据库内容
flask db upgrade
NFO [alembic.runtime.migration] Context impl MySQLImpl.INFO [alembic.runtime.migration] Will assume non-transactional DDL.