美文网首页
flask-migrate 笔记

flask-migrate 笔记

作者: 宽哥好 | 来源:发表于2019-11-26 11:16 被阅读0次

    在实际开发环境中,经常会发生数据库修改的行为。一般我们修改数据库不会手动取修改,而是取修改 orm 模型,然后在把模型映射到数据库中。
    而 flask-migrate 就是这样一种工具 ,它的底层是 alembic 。

    安装:

    pip install flask-migrate
    

    使用

    要让 flask-migrate 能够管理 app 中的数据库,需要使用 Migrate(app,db) 来绑定 app 和 数据库。假如现在有以下文件:

    # app.py
    
    from flask import Flask
    import config
    from exts import db
    from models import User
    
    app = Flask(__name__)
    app.config.from_object(config)
    db.init_app(app)  #
    
    
    @app.route('/')
    def index():
        return 'index'
    
    
    if __name__ == '__main__':
        app.run()
    
    
    # exts.py
    
    from flask_sqlalchemy import SQLAlchemy
    db = SQLAlchemy()
    
    # models.py
    
    from exts import db
    
    class User(db.Model):
        __tablename__ = 'user'
        id = db.Column(db.Integer, primary_key=True, autoincrement=True)
        name = db.Column(db.String(50), nullable=False)
    
    # config.py
    
    HOSTNAME = '127.0.0.1'
    PORT = 3306
    DATABASE = 'flask_migrate_demo'
    USERNAME = 'root'
    PASSWORD = 'chenkuan1110'
    DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
    
    SQLALCHEMY_DATABASE_URI = DB_URI
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    

    现在通过 flask-script来配置 flask-migrate

    # manage.py
    from flask_script import Manager
    from app import app
    from exts import db
    from flask_migrate import Migrate, MigrateCommand
    
    manager = Manager(app)  # 创建manager对象
    Migrate(app, db)  # 绑定 app 和 db
    manager.add_command('db', MigrateCommand)  # 添加flask-migrate子命令
    
    if __name__ == '__main__':
        manager.run()
    
    

    现在就可以通过 python manage.py db xxx来运行 flask-migrate中的命令来映射数据库等操作,如

    1. 初始化迁移文件:
    python manage.py db init
    
    1. 将模型映射到文件中
    python manage.py db migrate
    
    1. 将添加的映射文件添加到数据库:
    python manage.py db upgrade
    

    flask-migrate 使用注意事项

    • 需要将映射到数据库的模型导入到 manager.py 中 ,显示导入,不然不能创建迁移文件

    相关文章

      网友评论

          本文标题:flask-migrate 笔记

          本文链接:https://www.haomeiwen.com/subject/qxwtbctx.html