uliweb框架的alembic端口。

uliweb-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基 并且可以被任何应用程序单独使用R脚本。
  • 不要因为Sqlite无法改变事情而伤了我们的心。数据库 几乎不支持表或列的更改,这可能是 故意的。Alembic的设计 通过不围绕这些限制扭曲其核心api来保持简单, 理解sqlite不打算支持模式 变化。虽然alembic的体系结构可以支持sqlite的解决方案,而且 我们将支持这些功能,只要有人主动 实现和测试,直到sqlite开发人员决定 要提供alter的完整工作版本,它仍然是非常可取的 对数据库使用alembic或任何迁移工具 被设计为在本地模式迁移的假设下工作 正在发生。

alembic的文档和状态位于http://readthedocs.org/docs/alembic/

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

推荐PyPI第三方库


热门话题
java我可以使用indexOf()在forloop中返回两个不同的值吗?   web服务如何在JavaSE环境中部署JAXRS应用程序?   java没有BigInteger的自动装箱?   java Casting和泛型,有什么性能差异吗?   JavaSpring安全性:登录身份验证控制器   java如何使用libgdx设置圆弧的厚度?   java在异常处理期间何时使用记录器?   java对startActivityForResult的响应   java为什么在选择联系人之前调用onActivityResult?   java如何在ApacheFelix上实现异步处理?   java异常字符串筛选器   java Tomcat Web应用程序管理器未列出已部署的应用程序   excel csv到xls,java中有65536行以上