SQLAlchemy 版本迁移

pip install alembic

完成 pip 安装之后
在这里插入图片描述

  • 在 shell 或终端里面 cd 到项目根目录执行
    alembic init alembic

在这里插入图片描述
在这里插入图片描述

  • 如果用虚拟机的 pycharm 把生成的文件 download 回来(包括 alembic 目录和 alembic.ini

  • 修改 alembic.ini 设置数据库连接。

    默认是 sqlalchemy.url = driver://user:pass@localhost/dbname

    sqlalchemy.url = mysql+pymysql://admin:Root110qwe@127.0.0.1:3306/tornado
    在这里插入图片描述

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

  • 还有将路径添加

    import sys
    from os.path import abspath, dirname
    root = dirname(dirname(abspath(__file__))) # 把项目根目录加入 sys.path
    print(root)
    sys.path.append(root)
    

在这里插入图片描述

在这里插入图片描述

我这里有users和posts两张表

  • 配置完成执行

    alembic revision --autogenerate -m “create_user_table”

    这里可以看到虚拟机目录在 alembic/versions 里生成了 py 文件,然后执行

    alembic upgrade head

    这样就会更新 mysql 数据库了

在这里插入图片描述

在这里插入图片描述
同时会在versions下生成对应的py文件,里面执行的都是SQL语句

在这里插入图片描述

如果再次修改后再次执行,会报Target database is not up to date.

因为在version中有该表的记录,解决的办法就是删到对应的记录的py文件
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐