zoukankan      html  css  js  c++  java
  • Flask 第十话之数据库插件 -- Flask-Migrate

    介绍

    flask-migrate时基于Alembic进行一个封装,并且集成到Flask中,而所有的迁移操作其实都是Alembic做的,他能跟踪模型的变化,并将变化映射到数据库中

    一、安装

    pip install flask-migrate

     二、例子

    创建数据库管理库:python manage.py db init
    生成迁移脚本:python manage.py db migrate
    映射到数据库中:python manage.py db upgrade
    查看所有命令:python manage.py db --help
    核心代码如下:
    from flask_script import Manager # 命令行操作
    from flask_migrate import Migrate,MigrateCommand
    from app import app
    from DB.exts import db
    # 必须导入数据库
    import DB.models
    # 为app添加命令行操作功能
    manager = Manager(app)
    # 绑定app和db
    Migrate(app,db)
    # 将MigrateCommand里面得命令加入子命令中
    manager.add_command("db",MigrateCommand)
    
    #  创建数据库管理库:python manage.py db init
    #  生成迁移脚本:python manage.py db migrate
    #  映射到数据库中:python manage.py db upgrade
    #  查看所有命令:python manage.py db --help
    
    if __name__ == '__main__':
        manager.run()

    从代码中看到导入了app和db,那么先看看app中得代码

    from flask import Flask
    import settings
    from DB.exts import db
    
    app = Flask(__name__)
    app.config.from_object(settings)
    db = db.init_app(app)
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    @app.route('/profile')
    def profile():
        pass
    
    
    
    if __name__ == '__main__':
        app.run()

    app中也导入了db和settings,先看看settings和exts代码吧

    HOSTNAME = '127.0.0.1'
    PORT = 3306
    DATABASE = 'db_demo'
    USERNAME = 'root'
    PASSWORD = '123456'
    
    # 链接数据库的字符串,固定格式
    DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(
        username = USERNAME,
        password = PASSWORD,
        host = HOSTNAME,
        port = PORT,
        db = DATABASE,
    )
    
    
    SQLALCHEMY_DATABASE_URI = DB_URI
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    DEBUG = True
    TEMPLATES_AUTO_RELOAD=True
    settings.py
    from flask_sqlalchemy import SQLAlchemy
    db = SQLAlchemy()
    exts.py

    最后我们看看models数据库模型

    from DB.exts import db
    
    class User(db.Model):
        __tablename__ = "user"
        id = db.Column(db.Integer,primary_key=True,autoincrement=True)
        username = db.Column(db.String(50),nullable=False)
  • 相关阅读:
    视频实时增强算法
    FFMPEG中关于ts流的时长估计的实现(转)
    从二维码技术看抢占技术至高点的重要性
    专家观点:不断茁壮的音频生态系统中心(转)
    理解音响系统和房间的相互作用---房间脉冲响应
    Fraunhofer音频技术为MPEG未来高品质3D音频内容传输的标准依据
    Cortex-A15架构解析:它为什么这么强(转)
    骨传导技术(转)
    Faker伪数据生成
    Python数据库连接池DBUtils
  • 原文地址:https://www.cnblogs.com/lee-xingxing/p/12419756.html
Copyright © 2011-2022 走看看