是否值得使用sqlalchemy migrate?

2024-05-14 11:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用sqlalchemy(在Pylons中)的web应用程序。我需要有效地更改模式,以便能够至少每天更改生产版本,甚至更多,而不会丢失数据。

我在周末玩了一点sqlalchemy migrate,我会说它给我留下了很坏的印象。首先,我认为它无法帮助在两个数据库引擎之间进行迁移;这可能是仅用sqlalchemy就可以做到的。 其次,这些文件似乎不是最新的。我不得不更改一些命令行选项,比如在每个命令处指定存储库路径,这可能是迁移的一个bug。

但最糟糕的是“manage.pytest命令。它不仅实际修改了数据库(这一点在文档中有明确的说明,因此我不能责怪migrate),而且我的第一个迁移脚本只是简单地进行了愚蠢的模式迁移,使升级后的降级数据库具有与原始数据库不同的模式。但是“manage.py测试”的答案是

 success !

也就是说,它甚至没有检查模式是否处于一致状态。 那么是否值得使用migrate?与良好实践相关的“自己动手”方法相比,有什么优势吗as proposed by S.Lott? 是否有替代sqlalchemy migrate的方法实际上简化了迁移过程,或者我只是试图使用migrate来处理一个错误的apriori(然后请告诉我为什么没有明显优于创建上面链接中建议的CSV列)?

非常感谢!


Tags: 数据方法引擎命令版本web数据库应用程序
3条回答

我个人喜欢用它。这非常棒,因为新的安装(dev、test、prod)可以很容易地引导。不仅如此,它还为应用程序的增长提供了一个家,并为那些需要在应用程序的版本之间移动时进行的迁移提供了良好的入口点。需要在开发、测试和生产服务器上执行alter/etc。

完美吗?不。你可以让你的数据库处于一个糟糕的状态,但这就是为什么你有dev/testing/production版本的东西。

就我个人而言,我使用它在pylons中引导我的单元测试,使用sqlite db对其运行单元测试,但是我们在生产中使用mysql。因此,有一些跨数据库平台的建议使用它。

改用Alembic:

http://pypi.python.org/pypi/alembic

感谢您的评论,编辑后添加了一些推理--

它是由SQLAlchemy的作者开发的,它是全新的,并且得到了很好的支持。我对sqlalchemy migrate的了解还不足以给出一个很好的比较。但我快速阅读了清晰简洁的Alembic文档,然后在很短的时间内完成了自己的自动生成迁移。

自动生成:不是它唯一的操作模式,但如果您选择,Alembic将读取应用程序的sqlalchemy配置(例如,设置所有表、约束和映射的声明性模型类),并与数据库的实际当前状态进行比较,并输出表示两者之间的增量的Python脚本。然后将该脚本传递给Alembic的upgrade命令,这样就解决了差异。通常需要手工编辑少量迁移脚本,这是(A)迁移的本质,(b)您无论如何都要做的事情,以确保在运行迁移之前完全了解迁移将要执行的确切步骤。

Alembic也为跟踪迁移的方式带来了类似DVCS的能力。这使得返回数据库模式的任何过去状态变得非常容易。

Alembic出局了(http://pypi.python.org/pypi/alembic),由SQLAlchemy作者维护,考虑到SQLAlchemy迁移开发看起来停滞不前,今年几乎没有提交(http://code.google.com/p/sqlalchemy-migrate/source/list),我认为不值得再使用它了,我将把当前项目切换到Alembic。

如果它仍然被大量维护,我将对项目保持与SQLAlchemy同步的能力(这是以前的情况)充满信心。

相关问题 更多 >

    热门问题