zoukankan      html  css  js  c++  java
  • sqlalchemy + alembic数据迁移

    需要安装的包工具


    • pip install pymysql
    • pip install sqlalchemy
    • pip install alembic

     

    创建表


    • 新建models.py
     1 from sqlalchemy import create_engine
     2 from sqlalchemy.ext.declarative import declarative_base
     3 from sqlalchemy import Column, Integer, String
     4 
     5 DATABASE = {
     6     'HOST': 'localhost',
     7     'USERNAME': 'root',
     8     'PASSWORD': 'qwe123',
     9     'PORT': '3306',
    10     'DATABASE': 'test',
    11     'PARAMS': 'utf8'
    12 }
    13 
    14 MYSQL_URL = 'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?{PARAMS}'
    15 
    16 engine = create_engine(MYSQL_URL.format(**DATABASE))
    17 
    18 Base = declarative_base(engine)
    19 
    20 
    21 class Test(Base):
    22     __tablename__ = 'test'
    23     id = Column(Integer, autoincrement=True, primary_key=True)
    24     name = Column(String(20))
    25     # password = Column(String(30))
    26 
    27 
    28 if __name__ == '__main__':
    29     Base.metadata.create_all()

    alembic 初始化和配置


    • 在项目的根目录下:

      • alembic init alembic
    • 执行完命令之后会在项目的目录下生成如下目录
    • 修改alembic.ini 文件
    • 该配置等于model.py里面的mysql_url格式化后的结果(后面的参数去掉)

    • 修改env.py
    • 在 env.py 中设置,将target_metadata赋值成数据库的元数据(metadata)
      如果执行 revision 有 import 报错,注意是否正确将当前项目目录添加到 sys.path 路径

      

    迁移表


    •  将models.py中的password的注释消除
    • 执行alembic revision --autogenerate -m "add password"
    • 执行alembic upgrade head
    • 再去数据库查看,新的表的字段已经被加上了
    • alembic在windows下会有些异常
    • alembic迁移数据表时,不是项目的数据表(没有继承Base)的表会被删除
  • 相关阅读:
    8.使用背景图,制作雪碧图效果
    7.使用定位制作轮播图样式
    6.使用定位,制作弹出框界面
    App 抓包代理设置
    Cypress 自动化环境搭建
    Android APP 性能测试之 GT 工具
    接口测试流程
    接口结构内容
    接口定义
    网络七层协议
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/11324482.html
Copyright © 2011-2022 走看看