下面我将详细讲解如何在Python中使用Flask Migrate模块迁移数据库的完整攻略.
使用Flask Migrate模块迁移数据库前,需要确认已安装以下组件:
Flask
Flask Migrate
Flask Script
SQLAlchemy
如果未安装以上组件,可以使用以下命令进行安装:
pip install flask flask-migrate flask-script sqlalchemy
另外,需要确认在Flask应用的配置文件中,设置了SQLAlchemy数据库连接的URL参数.
在Flask应用的根目录下创建迁移库:
$ python manage.py db init
执行完该命令后,会在应用根目录下创建一个migrations目录,里面包含所有的迁移脚本.
在执行完数据库的增、删、改操作后,需要创建迁移脚本,以便对数据库进行迁移操作.
通过以下命令创建迁移脚本:
$ python manage.py db migrate -m "add user table"
其中,-m参数指定了迁移脚本的描述信息.
执行完该命令后,会在migrations目录下生成一个新的迁移脚本文件.
执行以下命令可以将创建好的迁移脚本应用到数据库中:
$ python manage.py db upgrade
迁移过程中会打印出详细的迁移信息和错误信息,如有错误可根据提示进行调整.
假设我们需要在数据库中新建一个用户表,包含 id, name, age 三个字段的结构.
首先,在数据库中创建User Model:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
age = db.Column(db.Integer)
然后,在命令行中使用以下命令创建迁移脚本:
$ python manage.py db migrate -m "add user table"
最后执行以下命令将迁移脚本应用到数据库中:
$ python manage.py db upgrade
执行上述操作后,即可在数据库中新建一个名为 user 的表.
假设我们需要删除用户表的 name 字段.
首先,将 User Model 中的 name 字段删除:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
age = db.Column(db.Integer)
$ python manage.py db migrate -m "remove name field"
$ python manage.py db upgrade
执行上述操作后,即可在数据库中删除 user 表中的 name 字段.