在sql中工作的数据库模式迁移工具

sqlturk的Python项目详细描述


概述

这个工具帮助您跟踪和发展您的数据库模式(sql)。

它是这样工作的每当您对数据库模式进行更改时,都会将它们放入“迁移”中—只需一个带有一系列SQL语句的.sql文件。Sqlturk跟踪已应用的迁移,并以保证的顺序运行它们

设计

有很多工具可以解决数据库模式问题 迁移。以下是sqlturk的不同之处:

  • 单向迁移。无法“回滚”迁移。在我的 经验,“降级”脚本几乎从未使用过,但编写它们却给开发人员增加了相当大的负担它们的出现可能会增加一种错误的安全感,因为它们很少使用,所以很有可能无论如何都无法正常工作
  • python不可知。Sqlturk根据SQL DDL进行操作它不适用于SQLAlchemy ORM模型或Django模型,因此可以在更广泛的上下文中使用普通sql还意味着一个对python一无所知的称职dba可以编写这些脚本。或者它们可以由另一个工具自动生成。
  • 没有魔法我想要一个明显的,容易理解的工具更改数据库模式可能会产生很大的后果,因此了解发生了什么非常重要

不相信?一些更复杂的工具:Django Southsqlalchemy-migrate

API使用

简短示例:

>>> from sqlturk.migration import MigrationTool
>>> tool = MigrationTool('sqlite:///:memory:', migration_dir='testmigrations')
>>> tool.install() # create a database table to track schema changes
>>> tool.find_migrations()
['1_foobar', '2_foobar_data', '10_foobar_delete']
>>> tool.run_migrations()
>>> tool.find_migrations() # check that all migrations have been applied
[]

可以找到迁移脚本示例 in the sqlturk’ sourcesqlturk使用sqlalchemy语法指定数据库连接字符串,有关详细信息,请参见其documentation

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

推荐PyPI第三方库


热门话题
java Spring安全编程授权   java Android库AAR取决于另一个库   Java/Groovy双精度语句问题   爪哇。查看安卓监视器图形时,release()不会减少我的内存   java无法在子类中使用EventFiringWebDriver对象   java第一个if语句始终为true,但第二个if语句不为true   java如何从作为字符串提供的XML源代码创建可绘制(或XmlResourceParser对象)?   多线程Java并发问题锁和同步方法   java Android Studio注册链接   java ArrayList of ArrayList of String   使用Shadow重新定位的包中的java Kotlin属性不起作用   java在接口org上找不到方法。阿帕奇。伊巴蒂斯。遗嘱执行人。陈述名为prepare的语句处理程序   如何在Java中放大2倍?   java当参数作为RequestBody和RequestParam发送时,sprig控制器无法识别发送的请求