zoukankan      html  css  js  c++  java
  • SQLAlchemy Alembic

    1. 安装:pip install alembic
    2. 初始化alembic:
      (venv) F:CodeAllProjectdevInfomodels>alembic init alembic
      Creating directory F:CodeAllProjectdevInfomodelsalembic ... done
       Creating directory F:CodeAllProjectdevInfomodelsalembicversions ... done
       Generating F:CodeAllProjectdevInfomodelsalembic.ini ... done
       Generating F:CodeAllProjectdevInfomodelsalembicenv.py ... done
       Generating F:CodeAllProjectdevInfomodelsalembicREADME ... done
       Generating F:CodeAllProjectdevInfomodelsalembicscript.py.mako ... done
       Please edit configuration/connection/logging settings in 'F:\Code\AllProject\devInfo\models\alembic.ini' before proceeding.
    3. 修改配置
      • 修改文件(alembic.ini):
      定义sqlalchemy.url,写法和sqlalchemy中定义engine一样
      sqlalchemy.url = mysql://root:123.com@127.0.0.1/allproject
      • 修改alembic/env.py文件,修改metadata定义
      # target_metadata = None
      import os,sys
      sys.path.append(os.path.realpath('.'))
      from baseobj import Base
      target_metadata=Base.metadata
    4. 数据库结构修改
    5. 生成版本文件,在alembic下的version下面生成一个文件,版本号_描述
    6. (venv) F:models>alembic revision --autogenerate -m "test update db"
      INFO  [alembic.runtime.migration] Context impl MySQLImpl.
      INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
      INFO  [alembic.autogenerate.compare] Detected removed table 'mib'
      INFO  [alembic.autogenerate.compare] Detected removed table 'device'
      INFO  [alembic.autogenerate.compare] Detected removed table 'board'
      INFO  [alembic.autogenerate.compare] Detected removed table 'ips'
      Generating F:modelsalembicversions45c578f737cc_test_update_db.py ... done
    7. 升级数据库:head表示最新版本文件,也可以直接指定版本号
      (venv) F:models>alembic upgrade head
      INFO  [alembic.runtime.migration] Context impl MySQLImpl.
      INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
      INFO  [alembic.runtime.migration] Running upgrade  -> 45c578f737cc, test update db
    8. 降级数据库,alembic downgrade xxxx-1,-1表示上一个版本
    9. (venv) F:models>alembic downgrade 45c578f737cc-1
      INFO  [alembic.runtime.migration] Context impl MySQLImpl.
      INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
      INFO  [alembic.runtime.migration] Running downgrade 45c578f737cc -> , test update db
    10. 手动编辑版本文件
      def upgrade():
          # ### commands auto generated by Alembic - please adjust! ###
          #添加行,board为表名,test_column为新加字段
          op.add_column('board',sa.Column('test_column',sa.Integer))
          
      def downgrade():
          #降级删除指定表指定列
          op.drop_column('board','test_column')



  • 相关阅读:
    C++笔记(1)----此运算符函数的参数太多
    算法学习(6)----整数转换为格雷码
    算法学习(5)----二叉树前序、中序、后序遍历互相转换
    算法学习(4)----汉诺塔递归算法和非递归算法
    算法学习(3)----求数组中大小最接近的两个元素的差
    算法学习(2)----丢番图方程
    9.11 Django视图 view和路由
    9.11 Django关于母版语言的灵活用法
    9.10Django模板
    9.9Dajngo MTV
  • 原文地址:https://www.cnblogs.com/yaya625202/p/8426997.html
Copyright © 2011-2022 走看看