• 使用 SQLAlchemy 时,进行模型的数据库迁移的方式


      一直都是使用 Django 框架进行 Web 后台的开发,喜欢它的大而全,也一直都觉得 Django 对业务的处理方式更加严谨,更加细节,特别是它内置的 ORM,用起来感觉非常棒,开发效率高,能节省开发人员非常多的时间,至于它一直被人诟病的性能问题,相信 Django3.0 进入异步时代以后,一切都会有所改观。

      新项目使用到了 Flask,说实话,真的无法喜欢 Flask 这个框架(话说真正的大牛都是自己写框架,只有搬运工才会纠结哪个框架会更好用),也许是我用 Django 真的太久了,思维已经惯性,但是确实觉得 Flask 实在过于宽松,不是我喜欢的那种东西。

      既然使用了 Flask,很显然就需要继续寻找一个第三方的 ORM 库,实现对数据库的 CRUD 操作(佩服直接怼 SQL 语句的大佬),如果是我本人 , SQLAlchemy 显然就会成为不二选择,如果使用了 SQLAlchemy,那么就需要一个数据库的迁移工具,有一个 alembic 工具就可以实现,事实上它也是 SQLAlchemy 的作者开发出来的,用起来确实很不错(以我本人用 Flask 的经历,就是先把它拼凑成一个低配版的 Django,然后再进行业务开发,可既然如此,为什么我不一开始就选择 Django 呢?应该是我技术素养不够,无法理解 Flask 的理念和精华吧!)

      鉴于我确实不怎么喜欢 Flask,所以这里就不对这个 alembic 工具,复制太多的使用介绍了,网上一抓一大把,这里姑且当做一个记录吧,要看就去看官方文档:

      https://alembic.sqlalchemy.org/en/latest/

      https://alembic.sqlalchemy.org/en/latest/tutorial.html

      我增加一些网络上不怎么搜索到,但是却又实用的,比如说,在一个项目中,我们使用了多个数据库,或者创建了多个数据表,在进行迁移时希望能指定应用进行迁移:

    一、alembic.ini 配置文件中:

    [app1]
    script_locations = "app1应用的env.py文件所在的目录"
    version_locations = "app1应用生成的迁移版本文件所在的目录"    
    [app2]
    script_locations = "app2应用的env.py文件所在的目录"
    version_locations = "app2应用生成的迁移版本文件所在的目录" 

    # env.py 我理解为应用的迁移管理文件

    二、在使用 alembic 进行迁移时,使用 -n 指定应用进行迁移

    # 将应用加入迁移版本控制
    alembic -n {应用名称} init migrations
    
    # 生成迁移文件
    alembic -n {应用名称} revision --autogenerate -m "迁移说明"
    
    # 进行迁移
    alembic -n {应用名称} upgrade head
  • 相关阅读:
    JavaScript自定义事件
    用Java构建一个简单的WebSocket聊天室
    PHP实现支付宝小程序用户授权的工具类
    jq ajax超时设置
    gulp使用笔记
    vue学习—组件的定义注册
    echarts设置线条粗细
    求js数组的最大值和最小值
    js删除数组中的 "NaN"
    jq方法(end)
  • 原文地址:https://www.cnblogs.com/lowmanisbusy/p/12616757.html
Copyright © 2020-2023  润新知