• 使用alembic进行openstack数据库版本管理


    在线更新

    1. alembic init <YOUR_DIR># 此处,我用的是alembic_v


    2.修改alembic.ini。如下:

    sqlalchemy.url = driver://user:pass@localhost:port/dbname
    	具体实例:
    	sqlalchemy.url = mysql+mysqldb://storage:lenovo@192.168.100.6/storagemgmt
    解释:
    此部分替换成对应的数据库连接,这个数据库连接的写法是与SQLAlchemy创建engine时是一样的。
    
    比如使用SQLAlchemy与mysqldb,那数据库连接就是如上“具体实例所示”。

    3. 修改en.py。把target_metadata = None,改为如下:
    import osimport sys# 此处需要将项目路径添加到sys.path,否则from import时找不到
    modelssys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../")
    from models.base import Base
    Modeltarget_metadata = BaseModel.metadata
    解释:在env.py中,将target_metadata设置成项目的model,使alembic能获取到项目中model定义的信息
    
    如:我的models.py的目录如下,那么应该如此导入。

    /usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/models.py


    其中Base是在models.py中定义的,如下:

    4. 创建新的版本。

    alembic revision --autogenerate -m "init db"
    解释:用 alembic revision -m+注释 创建数据库版本. “版本号+注释”就是版本文件的名字。
    	这个命名规则是在配置文件中定义的。

    5.更新数据库

    alembic upgrade head

    6.将数据库降级到最初版本.

    alembic downgrade base

    7.将数据库降级到执行版本

    使用alembic downgrade+版本号,不包含注释部分.

    alembic downgrade <version>
    	如: alembic downgrade 0e8e73745ff2

    离线更新

    在某些不适合在线更新的情况,可以采用生成sql脚本的形式,进行离线更新:
    
    alembic upgrade <version> --sql > migration.sql
    如:
    
    alembic upgrade ae1027a6acf --sql > migration.sql
    从特定起始版本生成sql脚本:
    
    alembic upgrade <vsersion>:<vsersion> --sql > migration.sql
    如:
    
    alembic upgrade 1975ea83b712:ae1027a6acf --sql > migration.sql
    如果是数据库降级操作,把upgrade替换为downgrade。

    Reference:

    https://docs.openstack.org/developer/neutron/devref/alembic_migrations.html 


  • 相关阅读:
    阿里云RDS的mysql数据库连接
    DRF框架400错误信息处理(视图集)
    关于百度Tongji Api的文档补充
    Python几种创建list的方法的效率对比
    手把手教你使用python复杂一点点的装饰器
    Python爬虫常用模块,BeautifulSoup笔记
    LSSS 构造过程
    微信网站应用扫码登陆
    分享一个自用的 Inno Setup 软件打包脚本
    彻底解决:请求被中止: 未能创建 SSL/TLS 安全通道
  • 原文地址:https://www.cnblogs.com/double12gzh/p/10166105.html
Copyright © 2020-2023  润新知