数据库迁移工具

dbupgrade的Python项目详细描述


dbupgrade

数据库迁移工具

MIT LicenseGitHubpypiTravis CI

用法:dbupgrade [OPTIONS] [-l API_LEVEL|-L] DBNAME SCHEMA DIRECTORY

用sql升级指定为DBNAME的数据库中给定的SCHEMA 来自DIRECTORY的脚本。DIRECTORY搜索具有 .sql后缀。这些文件是带有特殊头段的SQL脚本:

-- Schema: my-db-schema-- Version: 25-- API-Level: 3-- Dialect: postgresCREATETABLE...

需要以下标题:

  • schema
    要更新的架构的名称。
  • 方言
    这个脚本的数据库方言。使用sqlalchemy的数据库 url方案标识符,例如postgressqlite
  • 版本
    应用此脚本后架构的新版本。 如果两个脚本具有相同的模式、方言和版本,则这是一个错误。
  • api级别
    应用此脚本后架构的新API级别。 对于给定的架构,后续版本的api级别必须是 等于或高于前一版本的api级别。为了 例如,如果脚本版本44具有API级别3,则脚本版本45必须 API等级3或4。
  • 事务(可选)
    可能的值是yes(默认值)和no。当这个 头是yes,一个升级文件的所有语句和 相应的版本升级语句在单个 交易。否则,每个语句都是单独执行的。前者 通常更可取,以便在以下情况下回滚所有更改: 脚本无法应用,但在某些情况下需要后者。

数据库必须包含一个表db_config,其中有三列:schemaversion,和api_level。如果此表不存在,则创建该表。 对于给定的架构,此表必须正好包含一行。如果这一排 不存在,它创建的版本和API级别最初设置为0。

架构的当前版本和API级别是从 数据库和具有更高版本号的所有脚本将按顺序应用。 如果缺少任何版本号,脚本将在 丢失版本之前的最后一个版本。

除非提供-l-L选项,否则只有不提供 将应用提高API级别。如果给定了-l选项,则 将应用到给定api级别的脚本。-L将应用所有 不考虑api级别的脚本。

每个脚本在单独的事务中执行。如果一个脚本失败,所有 该脚本中的更改将回滚,脚本将停止 错误消息和非零返回状态。

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

推荐PyPI第三方库


热门话题
java log4j找不到log4jtest。房产?   我在java线程“awteventque1”中获得异常。lang.NullPointerException   java为什么在使用完整路径从文件系统读取文件时出错?   java如何迭代所有注册表项?   java中的安卓 Opencv SVM未正确训练   多线程Java ThreadPoolExecutor关闭特定线程?   如何使用Java NIO CreateDirectory方法设置目录所有者组?   java NatTable混合了固定宽度的列和可调整大小的填充剩余空间   java如何删除特定网络,即使该网络是由安卓上的其他设备创建的?   java Guava toJavaUtil()不存在   java对许多常量使用枚举是有效的memorywise?   java是否可以使用坐标定位JButton?   从WSDL生成java代码导致异常   java如何在安卓中导出javadoc   爬行JAX中的java NoClassDefFoundError错误   java为片段中的文本视图设置区域设置   发送最后一条消息后发生Java RMI RemoteException