简单的原始SQL数据库架构迁移工具。

sqlmigrate的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’ source。sqlturk使用sqlalchemy语法指定数据库连接字符串,有关详细信息,请参见其documentation

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

推荐PyPI第三方库


热门话题
Java GlazedList单个列筛选   java Android按顺序从Gallery接收图像   无法解析java“”如何解决此错误?   使用所有源代码生成maven项目的jar的java   java从Android应用程序将数据插入MySQL数据库。数据库中未反映的更改   java如何使此方法可重用?   java@JsonInclude(Include.NON_NULL)不会从内部POJO中删除NULL字段   xml如何解压java。尼奥。使用JAXB的路径?   java Maven未使用服务器的servletapi构建   java我觉得在实体中添加带有@Transient注释的字段非常容易出错。我说得对吗?   java需要什么样的线程启动方法?为什么没有唯一的运行方法?   Apache CXF Maven发行版和CXF发行版之间的java差异   java如何处理播放数据库连接异常   java在Gridview上绘制文本   使用LWJGL时出现java安全错误   java字符数组列表   java无法从RTSP服务器获得任何答案   java如何将对象从servlet传递到JSP?   java如何通过编程设置imageView的高度?