码迷,mamicode.com
首页 > 数据库 > 详细

sqlalchemy + alembic数据迁移

时间:2019-08-09 01:26:07      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:命令   target   base   windows   import   tar   roo   --   rate   

需要安装的包工具


 

  • 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)的表会被删除

 

sqlalchemy + alembic数据迁移

标签:命令   target   base   windows   import   tar   roo   --   rate   

原文地址:https://www.cnblogs.com/ivy-blogs/p/11324482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!