首页 > 数据库技术 > 详细

sqlalchemy + alembic数据迁移

时间:2019-08-09 00:06:22      阅读:181      评论:0      收藏:0      [点我收藏+]

需要安装的包工具


 

  • 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数据迁移

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!