有没有在Python中执行数据库迁移的库或工具,而不使用SQLAlchemy?我正在使用PostgreSQL数据库,查询是原始SQL。我使用psycopg2进行数据库连接。
除了SQLAlchemy之外,Python中有几个用于版本控制数据库的迁移工具。 我无法针对其中任何一个进行评价,因此我寻找那些似乎被广泛采用并得到积极维护的工具。
(截至2023年4月14日)
工具 | GitHub | 星标 | 维护时间 | 备注 |
---|---|---|---|---|
pgmigrate | yandex/pgmigrate | 562 | 2023年2月3日 | 仅适用于Postgres |
dbmate | amacneil/dbmate | 3.3k | 2023年3月 | |
Yoyo | coobas/yoyo-migrations | 0 | 2020年3月 | |
Migrate | golang/migrate | 11.2k | 2023年4月 | go语言库和CLI工具 |
我发现的其他资源似乎都与某个框架绑定在一起。在程序包索引中搜索会出现许多较旧的资源。
如果觉得pgmigrate或dbmate不可取,那么接下来是否值得问一下迁移工具是否真的需要特定于Python。通常,迁移是构建过程的一部分,(我认为)最好尽可能少地需要编码和配置。
Juan D.Vega的文章,Language and framework agnostic database migrations,强调了golang/migrate CLI工具,它试图提供一种管理迁移的方法,无论数据库支持的应用程序的详细信息如何。
flask-migratepg
的工具,它可以将SQL文件简单地放置在一个按字母数字顺序排列的database/migrations
目录下,并使用flask migrate execute
命令执行迁移。它基于Psycopg 3。我的团队选择这种技术,因为:
可以看一下。
psycopg2
是数据库连接 API,使用psycopg2
您必须使用标准的 SQL 命令来操作数据库,然而flask-SQLAlchemy
是围绕SQLAlchemy
构建的 ORM 包装器,并为您提供了一个 Pythonic 接口到数据库,因此如果您想真正地使用 Python 管理数据库,您应该使用SQLAlchemy
或flask-SQLAlchemy
。Python 中实际的迁移库是alembic
,而flask-migrate
是在alembic
上构建的方便包装器。 - Rohitalembic
为您生成迁移脚本,它隐藏了更新数据库中现有表的模式所需的巨大复杂性。对于具有大量列的表格,更新数据库中现有表的模式是非常复杂的操作,并且如果您经常需要执行此类操作,则会变得更加繁琐。alembic
与flask-migrate
结合使用可以使这项任务变得非常容易。 - Rohit