第十三章: flask_migrate 的介绍与安装与使用

flask_migrate 的介绍与安装与使用

  • 什么是 flask_migrate ?

    flask_migrate 是处理 sqlalchemy 数据迁移的工具。

  • flask_migrate 有什么用?

    flask_migrate 是当数据模型发生变化的时候,将修改后的东西重新映射到数据库中。

  • flask_migrate 怎么安装?

    pip install flask_migrate

  • flask_migrate 怎么使用 ?

    • config.py
  SQLALCHEMY_DATABASE_URI='mysql+pymysql://root:root@127.0.0.1:3306/test?charset=utf8'
  • exts.py
  from flask_sqlalchemy import SQLAlchemy
  from datetime import datetime
  db = SQLAlchemy()
  class Label(db.Model):
      __tablename__ = 'label'
      id = db.Column(db.Integer,autoincrement=True,primary_key=True)
      name = db.Column(db.String(32),nullable=False)
      uid = db.Column(db.Integer)
      create_time = db.Column(db.DateTime,default=datetime.now())
      __table_args__ = {
          'mysql_charset':'utf8'
      }
  • db_manager.py
    from flask import Flask
    from exts import db
    app = Flask(__name__)
    app.config.from_object('config')
    db.init_app(app=app)
  • manager.py
    from flask_script import Manager
    from db_manager import app
    from exts import db
    from flask_migrate import MigrateCommand,Migrate
    from exts import Label
    manager = Manager(app)
    # Migrate() 需要绑定app 和 db
    migrate = Migrate(app,db)
    # 子命令  MigrateCommand 包含三个方法 init migrate upgrade
    manager.add_command('db',MigrateCommand)
    
    if __name__ == '__main__':
        manager.run()
    
  • 运行
    > python manager.py db init
    > python manager.py db migrate
    > python manager.py db upgrade
  • 如果模型 exts.py中有改动,继续运行上面那三条命令即可。
### 安装Flask-Migrate 为了在Python项目中使用`Flask-Migrate`进行数据库迁移,首先需要通过pip工具安装必要的包: ```bash pip3 install flask-migrate ``` 对于某些环境可能还需要额外的依赖支持,比如`flask-script`用于命令行管理[^3]。 ### 配置Flask应用以使用Flask-Migrate 完成安装之后,在Flask应用程序内集成`Flask-Migrate`涉及到几个关键步骤。下面是一个典型的配置方式示例,展示了如何设置SQLAlchemy以及初始化`Flask-Migrate`: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'your_database_uri' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) migrate = Migrate(app, db) ``` 这段代码片段说明了基本的应用程序结构,其中包含了创建Flask实例、定义数据库连接字符串、禁用修改追踪功能,并最终初始化`Migrate`对象以便后续执行数据库版本控制操作[^1]。 如果计划利用命令行来进行更复杂的交互,则可以进一步扩展上述基础架构,加入`Manager`类和相应的命令注册逻辑: ```python from flask_script import Manager, MigrateCommand manager = Manager(app) manager.add_command('db', MigrateCommand) if __name__ == '__main__': manager.run() ``` 这使得开发者能够方便地运行诸如创建新修订版、升级或降级数据库模式等一系列任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值