用于sqlalchemy的数据库迁移工具。

alembic的Python项目详细描述


alembic是一个数据库迁移工具,由作者编写 共SQLAlchemy。迁移工具 提供以下功能:

  • 可以向数据库发出alter语句以更改 表和其他结构的结构
  • 提供一个可以构建“迁移脚本”的系统; 每个脚本都指示一系列特定的步骤,这些步骤可以“升级”一个 将数据库目标设置为新版本,并可选地执行一系列步骤,这些步骤可以 “降级”同样,反向执行同样的步骤。
  • 允许脚本以某种顺序执行。

Alembic的目标是:

  • 非常开放和透明的配置和操作。一个新的 alembic环境是从一组选定的模板生成的 在第一次安装时的一组选项中。然后模板将 一系列脚本,它们完全定义了如何建立数据库连接 以及如何调用迁移脚本;迁移脚本本身是 从该系列脚本中的模板生成。脚本可以 然后进一步定制以定义数据库将如何 与之交互以及新迁移文件应采用的结构。
  • 完全支持事务性ddl。默认脚本确保 迁移发生在事务中—对于那些支持 这个(postgresql,microsoft sql server),迁移可以在没有 失败时需要手动撤消更改。
  • 极简主义脚本结构。基本操作,如重命名 表/列,添加/删除列,更改列属性可以是 通过单行命令执行,如alter_column()、rename_table(), 添加约束()。不需要重新创建完整的sqlalchemy表 这些简单操作的结构-函数本身 在后台生成最小模式结构以实现给定的 DDL序列。
  • 迁移的“自动生成”。而现实世界的移民远不止这些 比自动确定的复杂,Alembic仍然可以 消除生成新迁移指令时的初始工作 从一个改变的模式。--autogenerate功能将检查 使用sqlalchemy模式检查的数据库的当前状态 功能,将其与数据库模型的当前状态进行比较 在python中指定,并生成一系列“候选”迁移, 将它们作为python指令呈现到新的迁移脚本中。这个 然后,开发人员编辑新文件,添加其他指令和数据 根据需要进行迁移,以生成完成的迁移。表和列 可以检测到级别更改,其约束和索引如下 好。
  • 完全支持作为SQL脚本生成的迁移。我们这些人 在公司环境中工作知道直接访问 生产数据库是一种罕见的特权,dba需要文本sql脚本。 Alembic的使用模型和命令的目标是能够运行 一系列迁移到文本输出文件中的过程与运行它们一样简单 直接到数据库。在这种模式下,必须注意不要调用其他 依赖内存中行选择的操作-alembic尝试 提供诸如bulk_insert()之类的帮助器构造,以帮助面向数据 与基于脚本的ddl兼容的操作。
  • 非线性,依赖关系图版本控制。脚本被赋予uuid 类似于dvcs的标识符,以及一个脚本到另一个脚本的链接 是通过脚本本身中的人类可编辑标记来实现的。 一组迁移文件的结构被认为是 有向无环图,意味着任何迁移文件都可以依赖于 在任何其他任意迁移文件集上,或在 全部。通过这个开放式系统,可以组织迁移文件 无限制地分成分支、多个根和合并点。 提供命令以生成新的分支、根和合并 自动分支。
  • 提供一个alter构造库,可以由任何sqlalchemy使用 申请。ddl构造基于sqlalchemy自己的ddlement基 并且可以由任何应用程序或脚本单独使用。
  • 最后,带上sqlite和它的不易改变的东西进入褶皱, 但是这样就满足了sqlite非常特殊的工作流需求 以一种明确的方式,使最坏的情况,通过 “批处理”迁移的概念,其中对表的多个更改可以 将一组指令组合在一起,形成一系列针对单个 “移动和复制”工作流。您甚至可以使用“移动和复制”工作流 其他数据库,如果要在后台重新创建表 在繁忙的系统上。

Alembic的文档和状态位于https://alembic.sqlalchemy.org/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
关于持久性框架的java查询   java My JComponents占用了太多像素   来自保存结构化JSON对象的java错误请求   java一个面板上的鼠标侦听器如何使用另一个面板上对象的值?   java openGL在psuedo3d透视图中绘制扭曲的精灵(图像)   java更改行跨度   java如何在NatTable单元格中插入两个文本(每个文本具有不同的字体)和一个图像?设定利润率?   Objective和Java、iPhone和Android之间有什么巨大的区别吗?   JavaVLCJ在eclipse中播放rtsp流视频,但不是在制作可执行JAR之后   java如何访问原始图像数据   java如何检查未扩展的Ant属性   安卓如何从中获取文本视图。xml到Java文件   java Hibernate仅检索一列,另一列为null   使用java更新json对象   Android中带有networksecurityconfig的java SSL固定   面向对象Java对象拆卸模式   刷新期间java阻止对HashMap的访问   数组BufferedReader和流行Java 8