zoukankan      html  css  js  c++  java
  • alembic教程

    安装
    pip install alembic
    步骤

    1.初始化 alembic 仓库

    在终端中, cd 到你的项目目录中,然后执行命令 alembic init
    alembic ,创建一个名叫 alembic 的仓库。
    仓库展示
    2.创建模型

    class User(Base):
         __tablename__ = 'user'
         id = Column(Integer,primary_key=True)
         username = Column(String(20),nullable=False)
         password = Column(String(100),nullable=False)
    
    class Article(Base):
         __tablename__ = 'article'
         id = Column(Integer,primary_key=True)
         title = Column(String(100),nullable=False)
         content = Column(Text, nullable=False)
    

    3.修改配置文件

    在 alembic.ini 中设置数据库的连接, sqlalchemy.url =driver://user:pass@localhost/dbname ,比如以 mysql 数据库为例,则配置后的代码为:

    sqlalchemy.url = mysql+pymysql://root:root@localhost/firstsqlalchemy?charset=utf8
    

    当我们导入一个模块时:import xxx,默认情况下python解析器会搜索当前目录、已安装的内置模块和第三方模块,搜索路径存放在sys模块的path

    import os,sys
    sys.path.append(os.path.dirname(os.path.dirname(__file__)))
    import your_models
    

    其次,修改 target_metadata = your_models.Base.metadata 设置创建模型的元类

    4.自动生成迁移文件

    alembic revision --autogenerate -m "message" 将当前模型中的状态生成迁移文件
    

    5.更新数据库

    使用 alembic upgrade head 将刚刚生成的迁移文件,真正映射到数据库中。同理,如果要降级,那么使用 alembic downgrade head 。

    5.修改代码

    修改表结构,重复4~5操作

    6.命令和参数解释

    init:创建一个 alembic 仓库。
    revision:创建一个新的版本文件。
    --autogenerate:自动将当前模型的修改,生成迁移脚本。
    -m:本次迁移做了哪些修改,用户可以指定这个参数,方便回顾。
    upgrade:将指定版本的迁移文件映射到数据库中,会执行版本文件中的 upgrade 函数。如果有多个迁移脚本没有被映射到数据库中,那么会执行多个迁移脚本。
    [head]:代表最新的迁移脚本的版本号。
    downgrade:会执行指定版本的迁移文件中的 downgrade 函数。
    heads:展示head指向的脚本文件版本号。
    history:列出所有的迁移版本及其信息。
    current:展示当前数据库中的版本号。另外,在你第一次执行 upgrade 的时候,就会在数据库中创建一个名叫 alembic_version 表,这个表只会有一条数据,记录当前数据库映射的是哪个版本的迁移文件。
    

    经典错误 :

    错误描述 原因 解决办法
    FAILED: Targetdatabase is not up todate 主要是 heads 和 current 不相同。 current 落后heads 的版本。 将current移动到head上。alembic upgrade head
    FAILED: Can’t locaterevision identified by’xxx’ 数据库中存的版本号不在迁移脚本文件中 删除据库的 alembic_version 表中的数据,重新执行 alembic upgrade head
  • 相关阅读:
    预备作业2
    我期待的师生关系
    20162317袁逸灏 第四周实验报告
    《程序设计与数据结构》第4周学习总结
    《程序设计与数据结构》第3周学习总结
    20162317 《程序设计与数据结构》第2周学习总结
    学号20162317《程序设计与数据结构》第1周学习总结
    预备作业03
    预备作业02
    20162317袁逸灏
  • 原文地址:https://www.cnblogs.com/donghaoblogs/p/10389690.html
Copyright © 2011-2022 走看看