问题标签 [sqlalchemy-migrate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5288 浏览

python - 使用 sqlalchemy 和 elixir 更新 sqlite 数据库模式

我创建了一个使用 elixir/sqlalchemy 存储数据的 python 应用程序。该软件的第二个版本需要更新在先前版本中创建的任何文件,以便添加/删除表和列。

我的问题是:我怎样才能做到这一点?我知道sqlalchemy-migrate,但我必须说我觉得它令人困惑。它没有提到现有数据会发生什么。此外,sqlite减少了 ALTER TABLE 支持,那么如果我尝试删除列,迁移会做什么?还有其他使用迁移的方法吗?

0 投票
1 回答
532 浏览

deployment - 支持 sqlalchemy-migrate 部署的 Fabfile?

我的数据库迁移(使用 sqlalchemy-migrate)在我的开发环境中运行良好。但是,我对如何将其集成到我的部署过程中感到有些困惑。

我想使用fabric 在远程服务器上执行manage.py 文件,但我不确定该文件中的存储库值使用什么。引用 'appname/migrations' 和 '/usr/local/pylons/appname/env/lib/python2.6/site-packages/appname-05.egg/appname/migrations/' 都因 migrate.versioning 而失败。 exceptions.InvalidRepositoryError

有没有人有一个与 sqlalchemy-migrate 配合得很好的 fabfile 和 manage.py?

0 投票
1 回答
1173 浏览

sqlalchemy - 我在哪里可以找到 sqlalchemy-migrate 的好例子或教程

此线程中,有人指出我使用sqlalchemy-migrate来帮助使用 sqlalchemy 快速更改 Web 应用程序。然而,还推荐了一种自己动手的方法,包括为新的数据库模式手动编写 CSV 列,最后导入它们。

问题是我找不到sqlalchemy-migrate 的真实示例。我发现的资源充其量描述了添加单个列或列重命名。官方文档基本上描述了 API,很难看出如何有效地使用 migrate。从文档中我什至不知道 migrate 是否可以帮助更改数据库引擎,例如从 sqlite 到 mysql,而 DIY 解决方案可以完成这项工作。

我真的很想看到可以对数据库模式进行一些重要转换并证明 migrate 确实是一个有用的工具的代码。

我在哪里可以找到 sqlalchemy-migrate 的好例子/教程?

谢谢 !

0 投票
3 回答
33477 浏览

python - 是否值得使用 sqlalchemy-migrate ?

我有一个使用 sqlalchemy(在 Pylons 内)的 Web 应用程序。我需要有效地更改架构,以便能够至少每天更改生产版本,也许更多,而不会丢失数据。

我在周末玩了一点 sqlalchemy-migrate,我想说它给我留下了不好的印象。首先,我认为它无助于两个数据库引擎之间的迁移;这可能只用 sqlalchemy 就可以完成。其次,文档似乎不是最新的。我不得不更改一些命令行选项,例如在每个命令中提供存储库路径,这可能是迁移的错误。

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

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

非常感谢!

0 投票
1 回答
2359 浏览

python - 使用 SqlAlchemy 和 SqlAlchemy-migrate 管理种子数据

我在我的 Pylons 应用程序中使用 SqlAlchemy 来访问数据,并使用 SqlAlchemy-migrate 来维护数据库模式。

它可以很好地管理架构本身。但是,我也想以类似迁移的方式管理种子数据。例如,在创建 ProductCategory 表时,用类别数据为其播种是有意义的。

看起来 SqlAlchemy-migrate 不直接支持这个。使用 Pylons+SqlAlchemy+SqlAlchemy-migrate 执行此操作的好方法是什么?

0 投票
0 回答
804 浏览

python - py2exe 和 sqlalchemy-migrate

我将 python 2.6、sqlalchemy 0.6 用于小型桌面应用程序。此外,我正在使用 py2exe 和 sqlalchemy-migrate,我正在尝试将 migrate 集成到 exe 中。这样,当用户启动应用程序时,数据库会自动升级。

如果我尝试在我的 Eclipse 项目中使用 migrate 它运行良好,但我想使用 py2exe 在 exe 中发布项目本身。不幸的是,当我启动 exe 时出现错误:

但是目录 db_repository 和迁移脚本正确地位于 py2exe 使用的“library.zip”中,以合并我的软件使用的所有 python 资源。

似乎 sqlalchemy-migrate 没有在 zip 中搜索存储库的目录。

这里的问题(repository.py):

如何从 zip 中读取存储库?有没有人尝试(并成功)在 py2exe 生成的 exe 中使用 sqlalchemy-migrate ?

谢谢你的帮助

0 投票
2 回答
2945 浏览

python - 使用 SQLAlchemy-Migrate 创建具有外键约束的表时出错

我正在用python构建一个应用程序。我正在使用sqlalchemy-migrate来跟踪我的数据库模式。我有一个表 user_category,它有两列:id 和 name。我正在尝试使用 user_category 表的外键创建一个用户表。我用于创建用户表的更改脚本如下:

当我运行“manage.py test”时,我得到了错误:

0 投票
2 回答
898 浏览

python - 升级 Pyramid/SQLAlchemy Web 应用程序

我有一个标准运行的磨房 Pylons Pyramid 应用程序,它使用 SQLAlchemy 进行数据库持久性。

我已经建立了一个 SQLAlchemy-migrate 存储库并让它运行,但我真的希望能够使用 paste 来升级和降级数据库,或者至少以某种方式让用户(在安装 egg 之后)升级/降级数据库到所需的版本。

我现在已经将它内置到我的应用程序中,所以在应用程序启动时它会进行版本升级,但我宁愿使用用户明确必须升级数据库的东西,以便他们确切知道发生了什么,并且知道提前做好备份。

我该怎么做呢?如何添加要粘贴的命令?

用户设置应用程序的方式是:

第一次设置它,进行数据库升级或一般升级我想要:

或类似的规定。

0 投票
1 回答
9600 浏览

python - sqlalchemy:“'InstrumentedAttribute' 对象和 'Comparator' 对象都没有属性”错误

我已经使用 sqlalchemy 和 sqlalchemy-migrate 向数据库添加了一个表,当我对命中数据库的不相关代码运行单元测试时,我收到以下错误:

我可以做些什么来导致我的 sqlalchemy 模型中的错误导致此错误?代码位于lp:~usc-isi/nova/instance_type_metadata 的Launchpad 上,修订版 1109-1115 有我的更改。

我在nova/db/sqlalchemy/models.py中添加了一个模型:

我添加了文件 nova/db/sqlalchemy/migrate_repo/versions/019_add_instance_type_metadata.py

0 投票
0 回答
945 浏览

python - Python SqlAlchemy-Migrate 错误添加 ForeignKeyConstraint

我有一个变更集脚本,我在其中尝试将外键约束添加到现有表列。它看起来像:

当我测试更改时,SQLAlchemy 抱怨:

看起来它正在执行表交换以更改架构。有没有其他人遇到过这个?难道我做错了什么?或者有解决方法吗?

编辑:我正在用 sqlite 测试它。这是我的manage.py:

使用 mysql 方言似乎工作正常。可以隔离到sqlite。