zoukankan      html  css  js  c++  java
  • [python]Flask-migrate简单入门

    Flask-Migrate是用于处理SQLAlchemy 数据库迁移的扩展工具。当Model出现变更的时候,通过migrate去管理数据库变更。

    Migrate主要有3个动作,init、migrate 和upgrade。

    以下面的应用为例:

     1 from flask import Flask
     2 from flask_sqlalchemy import SQLAlchemy
     3 from flask_migrate import Migrate
     4 
     5 app = Flask(__name__)
     6 app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///app.db"
     7 
     8 db = SQLAlchemy(app)
     9 migrate = Migrate(app, db)
    10 
    11 # Model
    12 class User(db.Model):
    13     id = db.Column(db.Integer, primary_key=True)
    14     name = db.Column(db.String(128))

    1.  初始化

    flask db init

    这个命令会在当前目录下生成一个migrations文件夹。这个文件夹也需要和其他源文件一起,添加到版本控制。

    2. 生成最初的迁移

    flask db migrate

    此命令会在migrations下生成一个version文件夹,下面包含了对应版本的数据库操作py脚本。

    由于migrate并不一定全部发现你对model的所有改动,因此生成的py脚本需要review, 有错的话则需要edit。

    例如目前知道的,表名称表更,列名称变更,或给constraints命名等,migreate都不能发现的。更多限制细节见此:Alembic autogenerate documentation

    3. 数据库升级

    flask db upgrade

    最后一步。此命令相当于执行了version文件夹下的相应py版本,对数据库进行变更操作。

    此后,对model有变更,只要重复migrate和upgrade操作即可。

    查看帮助文档:

    flask db --help

    使用Flask-Script的命令调用,自行参考官方文档: Flask-Migrate Documentation

  • 相关阅读:
    测量MySQL的表达式和函数的速度
    MySQL中的比较操作符<=>
    Python中的args和kwargs
    MySQL8新特性(2)--mysql的升级过程
    MySQL8新特性(1)--原子DDL
    PostgreSQL中的一些日志
    PostgreSQL的表空间
    [九]基础数据类型之Boolean详解
    [八]基础数据类型之Double详解
    [七]基础数据类型之Float详解
  • 原文地址:https://www.cnblogs.com/oDoraemon/p/9206921.html
Copyright © 2011-2022 走看看