值得使用 sqlalchemy-migrate 吗? [关闭]

2023-12-19

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

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

但最糟糕的是“manage.pytest“命令。实际上不仅如此修改数据库(这一点在文档中清楚地指出,所以我不能责怪迁移)但是我的第一个迁移脚本只是进行了简单的愚蠢的模式迁移,留下了升级降级的数据库与原始架构不同。但“manage.py 测试”只是回答了类似的问题

 success !

也就是说,它甚至没有检查模式是否处于一致状态。 所以值得使用迁移吗?与良好实践相关的“自己动手”方法相比,是否有任何优势根据 S.Lott 的建议 https://stackoverflow.com/questions/4165452/how-to-efficiently-manage-frequent-schema-changes-using-sqlalchemy/4165496#4165496? 是否有 sqlalchemy-migrate 的替代方案实际上简化了迁移过程,或者我只是尝试使用 migrate 来进行糟糕的操作priori(那么请告诉我为什么没有明显优于上面链接中建议的创建 CSV 列)?

非常感谢!


使用 Alembic 代替:

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

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

它是由SQLAlchemy的作者开发的,是全新的并且得到很好的支持。我对 sqlalchemy-migrate 的了解不够,无法进行很好的比较。但我快速阅读了清晰简洁的 Alembic 文档,然后在很短的时间内让我自己的自动生成的迁移工作起来。

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

Alembic 还为您的迁移跟踪方式带来了类似 DVCS 的功能。它使您可以轻松返回数据库模式的任何过去状态。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

值得使用 sqlalchemy-migrate 吗? [关闭] 的相关文章

  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • Python、Tkinter、更改标签颜色

    有没有一种简单的方法来更改按钮中文本的颜色 I use button text input text here 更改按下后按钮文本的内容 是否存在类似的颜色变化 button color red Use the foreground设置按钮
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • 使用 openCV 对图像中的子图像进行通用检测

    免责声明 我是计算机视觉菜鸟 我看过很多关于如何在较大图像中查找特定子图像的堆栈溢出帖子 我的用例有点不同 因为我不希望它是具体的 而且我不确定如何做到这一点 如果可能的话 但我感觉应该如此 我有大量图像数据集 有时 其中一些图像是数据集的
  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • feedparser 在脚本运行期间失败,但无法在交互式 python 控制台中重现

    当我运行 eclipse 或在 iPython 中运行脚本时 它失败了 ascii codec can t decode byte 0xe2 in position 32 ordinal not in range 128 我不知道为什么 但
  • Abaqus 将曲面转化为集合

    我一直试图在模型中找到两个表面的中心 参见照片 但未能成功 它们是元素表面 面 查询中没有选项可以查找元素表面的中心 只能查找元素集的中心 找到节点集的中心也很好 但是我的节点集没有出现在工具 gt 查询 gt 质量属性选项中 而且我找不到
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像

随机推荐

  • TMUX 设置会话的环境变量

    我的工作环境是 我有多个项目 并且每个项目中都有许多脚本 这些脚本使用设置为特定于该项目的值的环境变量 我想做的是为每个项目使用单独的 tmux 会话并设置变量 以便为该会话中的所有窗口设置它们 我尝试使用 set environment
  • 计算两个用户之间的社交距离

    如何编写一个有效的算法来返回两个用户之间的社交 距离 例如 当您访问 LinkedIn 上的个人资料时 您可以看到您与用户之间的距离 gt 用户 A 是用户 B 的朋友 并且 B 是 C 的朋友 当 A 访问 C 时 距离为 1 该图很大
  • 为什么使用客户端凭证流程?

    我一直在考虑使用 oauth2 客户端凭据授予来保护我的 API 所有用户都将是受信任的第三方 我在这里遵循与贝宝相同的方法 https developer paypal com docs integration direct paypal
  • 有没有一种聪明的方法来编写固定长度的平面文件?

    有没有任何框架 库可以帮助用java编写固定长度的平面文件 我想将 bean 实体的集合写入平面文件 而不用担心转换 填充 对齐 填充符等 例如 我想解析一个 bean 如下所示 public class Entity String nam
  • MySQL 错误:排序中止

    我在 Windows 2008 上有 MySQL 5 1 内存为 8G 该错误在事件查看器上每两秒发生一次 错误是 D SW MySQL MySQL server 5 1 bin mysqld 排序已中止 有人看到这个错误吗 至少有一些已知
  • Rx - 如何在收到 onNext() 后自动取消订阅?

    如何在收到 onNext 后自动取消订阅 现在我使用这段代码 rxObservable compose bindToLifecycle unsubscribe automatically in onPause if method was c
  • 设置 Android 中动态添加的 EditText 的属性

    我正在开发一个 Android 应用程序 它下载 xml 并显示一个布局 其中包含许多动态添加的编辑文本 复选框 旋转器等 如下所示 LinearLayout ll new LinearLayout this EditText nameFi
  • Vim 正则表达式不匹配字符类中的空格

    我正在使用 vim 进行搜索并用以下命令替换 s lambda s n s S gc 我正在尝试匹配 a 之后的所有单词 结束行和空白字符 例如 这一行的整个内容应该匹配 lambda FactoryGirl create 相反 它只匹配换
  • 使用通配符对多个值进行模式匹配

    在 Kotlin 中 我们可以使用when对给定值进行模式匹配 例如 when value 1 gt One 2 3 gt Two or three else gt The rest 我们还可以通过将两个值嵌套在一个中来同时对多个值进行模式
  • webMethods 遍历文档列表

    我正在创建一个流程服务 并在其中插入另一个流程 该流程将文档列表作为输出并包含 5 个字符串字段 问题是我无法循环该文档列表 无论我在输入数组 getPropertyOutput getPropertyOutput 0 中放入什么 都会被忽
  • 如果validation_data ValueError:具有多个元素的数组的真值不明确,则在 model.fit() 中引发错误。使用 a.any() 或 a.all()

    我正在尝试运行一个简单的自动编码器模型 我正在从包含词嵌入的 csv 中读取训练数据 我有这段代码 但标题中的错误是在model fit 功能并与我的连接validation data 我尝试了很多方法 但错误仍然存 在 我是 NLP 的新
  • Rake“已初始化常量 WFKV_”警告

    尝试跑步rake cucumber ok并收到此错误 Users dev rbenv versions 1 9 2 p290 lib ruby gems 1 9 1 gems rack 1 3 4 lib rack backports ur
  • 将 :host-context() 与相邻同级选择器一起使用

    我正在尝试使用 host context 和相邻的同级选择器来设置元素的样式 如下所示
  • 严格的别名规则是什么?

    当询问有关C 中常见的未定义行为 https stackoverflow com questions 98340 what are the common undefinedunspecified behavior for c that yo
  • Java8 从类中检索 lambda setter

    我试图为私有字段的 setter 获取 lambda 方法句柄 但由于某种原因 无法找到该 setter 这是我正在使用的功能接口 FunctionalInterface public interface ISetter
  • 强制执行有界 Nat?

    我怎样才能强制执行Nat that s lt N Example def lessThan5 x NatLT5 where lessThan5 Nat 4 会编译 但是lessThan5 Nat 6 不会 您可以使用类型类LTEq http
  • 错误:(gcloud.app.deploy)INVALID_ARGUMENT:无法解析源

    我正在尝试部署一个go 1 11运行时曾经有效 但最近我得到了 ERROR gcloud app deploy INVALID ARGUMENT unable to resolve source错误 我的里面什么也没有app yaml已更改
  • python中强度函数的积分

    有一个函数可以确定圆形孔径的夫琅和费衍射图案的强度 更多信息 http en wikipedia org wiki Airy Disk 距离 x 3 8317 3 8317 中函数的积分必须约为 83 8 如果假设 I0 为 100 当您将
  • 如何向作为组存储在 HDF5 文件中的 pandas 数据帧添加属性?

    我创建了一个多维 pandas 数据框 如下所示 import numpy as np import pandas as pd iterables bar baz foo qux one two mindex pd MultiIndex f
  • 值得使用 sqlalchemy-migrate 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个使用 sqlalchemy 的 Web 应用程序 在 Pylons 内 我需要有效地更改架构 以便能够至少每天 甚至更多 更改生产版本