- 知识图总览:注意进入项目虚拟环境后在执行迁移
1- 准备工作 使用orm创建原始表并添加数据
- 终端连接数据库并做如下操作
- Pycharm运行如下代码
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) class Config(object): SQLALCHEMY_DATABASE_URI = "mysql://root:[email protected]:3306/author" SQLALCHEMY_TRACK_MODIFICATIONS = True app.config.from_object(Config) db = SQLAlchemy(app) class Author(db.Model): """作者""" __tablename__ = "tbl_authors" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32), unique=True) if __name__ == '__main__': db.drop_all() db.create_all() au_xi = Author(name='我吃西红柿') au_qian = Author(name='萧潜') au_san = Author(name='唐家三少') db.session.add_all([au_xi, au_qian, au_san]) db.session.commit() app.run(debug=True)
- 终端再次查看,发现已经有了表与数据
2- 执行数据库迁移 给原始表添加email字段 并关联模型类的orm映射
- 原始代码更改为如下内容,文件命名为
tt.py
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_script import Manager from flask_migrate import MigrateCommand, Migrate app = Flask(__name__) class Config(object): SQLALCHEMY_DATABASE_URI = "mysql://root:[email protected]:3306/author" SQLALCHEMY_TRACK_MODIFICATIONS = True app.config.from_object(Config) db = SQLAlchemy(app) manager = Manager(app) # 创建启动命令管理对象 Migrate(app, db) # 创建数据库迁移工具对象 manager.add_command("db", MigrateCommand) # 向启动命令管理对象中添加迁移命令 class Author(db.Model): """作者""" __tablename__ = "tbl_authors" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(32), unique=True) email = db.Column(db.String(128), unique=True) # 新增email字段 if __name__ == '__main__': manager.run() # 使用命令行方式启动
-
终端中依次执行如下命令
创建迁移仓库:
python tt.py db init
python tt.py db migrate -m "initial migration"
python tt.py db upgrade
3- 其余操作
- 查看历史更新版本号:
python tt.py db history
- 回退数据库:
python tt.py db downgrade c30da037d7ca