Django 的核心迁移工具与 Django 数据迁移的 South

     2023-02-24     52

关键词:

【中文标题】Django 的核心迁移工具与 Django 数据迁移的 South【英文标题】:Django's Core Migrate Tool vs South for Django Data Migrations 【发布时间】:2014-01-12 03:27:11 【问题描述】:

我目前没有在我的 Django 项目中使用迁移,但我打算很快使用。我知道 South 是事实上的工具,我打算使用它,但后来我在 Django 项目网站上读到,开发版本(我猜将作为 1.7 发布)有一个核心迁移工具,运行为 migrate .

由于使用迁移工具的经验很少(我用 South 安装了 Django-CMS 并玩了一天左右),对于初学者来说哪个是最好的?

另外,由于迁移本身还很年轻,而 Django 的版本更是如此,所以我现在选择 South 会更好吗?

最后,另一个问题是,如果我从 South 开始(我的大部分 Django 项目都是 v1.5),当我升级到 1.6 再升级到 1.7 时,我会不会很难转换到 Django 的核心迁移?

【问题讨论】:

相关问题:如何提供从 South 应用程序到 Django 1.7 迁移的升级路径***.com/questions/22597240/… 【参考方案1】:

轻松删除南迁移历史并初始化任何其他类型的迁移工具。

Django 核心迁移基于 South,所以我可以将 South 迁移历史导出到 Django 核心迁移。

由于 Django 核心迁移尚未发布,而您的目的是学习,我建议从 South 开始。

【讨论】:

我安装了南并转换了我的应用程序,它运行良好。由于我还没有准备好升级 Django,所以这个计划似乎是个好主意。谢谢。【参考方案2】:

由于 Andrew Godwin(创建者或 Django Core 迁移)关于此更改的说法是:“South 已有四年历史的设计达到严重限制,是时候将迁移支持添加到 Django 本身了”,我不会打赌能够将南迁移历史导出到 Django 核心迁移。

这就是为什么,如果可以的话,我建议你等到 1 月 20 日:如您所见here,将发布带有核心迁移的 Django 1.7 alpha 版本。

最终,Andrew Godwin worked on South himself,所以您不应该将 Django Core Migration 视为一个全新的工具,而应将其视为 South v2。

那么,您可以确定,一旦 Core 迁移发布,South 就不会真正得到维护。

这就是为什么我建议等待一段时间并给这个新工具一个机会:)

【讨论】:

【参考方案3】:

Django 1.7 的文档讨论了从 South 升级:

如果您已经使用 South 0.x 创建了预先存在的迁移,那么使用 django.db.migrations 的升级过程非常简单:

确保所有安装都与迁移完全同步 删除所有(编号的)迁移文件,但不要删除目录或 init.py - 确保也删除 .pyc 文件。 运行 python manage.py makemigrations。 Django 应该会看到空的迁移目录并以新格式进行新的初始迁移。 运行 python manage.py migrate。 Django 将看到初始迁移的表已经存在,并将它们标记为已应用而不运行它们。

就是这样!唯一的复杂情况是,如果您有外键的循环依赖循环;在这种情况下,makemigrations 可能会进行多次初始迁移,您需要使用以下命令将它们全部标记为已应用:

python manage.py migrate --fake yourappnamehere

(来自here)。

【讨论】:

>Django 将看到初始迁移的表已经存在,并将它们标记为已应用而不运行它们。显然,并非总是如此。我收到错误“django.db.utils.OperationalError:表“[table]”已经存在”。运行 migrate app 0001 --fake 会修复它。

如何将现有 CharField 与数据迁移到 Django 中的 IntegerField

】如何将现有CharField与数据迁移到Django中的IntegerField【英文标题】:HowdoImigrateexistingCharFieldwithdatatoIntegerFieldinDjango【发布时间】:2016-09-0512:09:58【问题描述】:我的models.py中有一些带有CharFields的模型。例如classMyModel(models.Model):it... 查看详情

django数据库迁移

一,简单的数据导出与导入(简单的迁移)1.django项目提供了一个导出的方法pythonmanage.pydumpdata,不指定appname时默认为导出所有的app1python manage.py dumpdata [appname] > appname_data.json比如我们有一个项目叫mysite,里面... 查看详情

Django 1.7 内置迁移与南迁移?

】Django1.7内置迁移与南迁移?【英文标题】:Django1.7builtinmigrationsvsSouthmigrations?【发布时间】:2014-12-2116:38:45【问题描述】:我已经在问题中检查了这个问题,但找不到任何关于Django构建迁移的简单解释,或者-它们足够可靠吗?... 查看详情

如何转储 django-cms 相关内容以便与正在运行的实例一起迁移?

】如何转储django-cms相关内容以便与正在运行的实例一起迁移?【英文标题】:Howtodumpdjango-cmsrelatedcontentsinordertomigratewithrunninginstance?【发布时间】:2011-06-1520:53:03【问题描述】:我有一个类似的problem需要解决。我的数据库在生产... 查看详情

带有转储数据和迁移的 Django 备份策略

】带有转储数据和迁移的Django备份策略【英文标题】:Djangobackupstrategywithdumpdataandmigrations【发布时间】:2016-04-2116:36:58【问题描述】:与thisquestion一样,我为我的数据库设置了一个基于dumpdata的备份系统。该设置类似于运行一个... 查看详情

Django pymssql 迁移

】Djangopymssql迁移【英文标题】:Djangopymssqlmigration【发布时间】:2016-12-1416:06:14【问题描述】:我必须将MSSQLServer数据库与Django中的项目一起使用,我使用django-pymssql依赖项,一开始一切正常。当我运行初始迁移时,它会抛出一个... 查看详情

重新运行 Django 数据迁移

】重新运行Django数据迁移【英文标题】:RerunaDjangodatamigration【发布时间】:2015-11-0409:01:42【问题描述】:如何在Django1.8+上重新运行数据迁移?如果相关,我的迁移编号为0011_my_data_migration.py,是最新的迁移。【问题讨论】:请注... 查看详情

Django 重建所有迁移

】Django重建所有迁移【英文标题】:DjangoRebuildallmigrations【发布时间】:2017-04-1001:27:00【问题描述】:我正在Django中构建一个应用程序,它使用实时/使用中的数据库。基本上,由于SQL数据库的应用程序开发经历了一些结构变化,... 查看详情

Django 1.8:迁移与 AbstractBaseUser 中断

】Django1.8:迁移与AbstractBaseUser中断【英文标题】:Django1.8:migrationsbreakwithAbstractBaseUser【发布时间】:2015-07-1106:01:52【问题描述】:我有一个正在运行的Django1.6项目,我正在升级到1.8。我在应用程序mainapp中有一个自定义用户模型... 查看详情

迁移 Django 固定装置?

】迁移Django固定装置?【英文标题】:MigratingDjangofixtures?【发布时间】:2011-04-2911:24:10【问题描述】:我有一个Django应用程序。我有包含测试数据的.json夹具文件,单元测试使用数据来确认应用程序是否正常工作。我也使用South... 查看详情

Django:迁移错误中的加载数据

】Django:迁移错误中的加载数据【英文标题】:Django:loaddatainmigrationserrors【发布时间】:2015-12-3022:56:19【问题描述】:自从使用Django迁移(不是南)并使用loaddata作为其中的固定装置以来,我发生了一些非常烦人的事情。这是重... 查看详情

Django:处理导入数据库的迁移?

】Django:处理导入数据库的迁移?【英文标题】:Django:handlemigrationsforanimporteddatabase?【发布时间】:2015-11-2017:25:56【问题描述】:我正在使用Django1.8并尝试建立一个现有项目。我继承了一个数据库转储和一个代码库。我已成功导... 查看详情

在 Django 数据迁移中手动提交

】在Django数据迁移中手动提交【英文标题】:CommitmanuallyinDjangodatamigration【发布时间】:2015-09-2317:10:39【问题描述】:我想编写一个数据迁移,在其中我以较小的批量修改大表中的所有行,以避免锁定问题。但是,我不知道如何... 查看详情

django基础核心技术之model模型的介绍与设计

Django基础核心技术之Model模型的介绍与设计原创:YunboShiPythonWeb与Django开发2018-05-03Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL的配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。今天小... 查看详情

为还没有任何迁移的 Django 项目创建迁移

】为还没有任何迁移的Django项目创建迁移【英文标题】:CreatingmigrationsforaDjangoprojectthatdoesnothaveanymigrationsalready【发布时间】:2022-01-1002:41:06【问题描述】:我正在为一个有13年历史的Django项目的客户工作。他们在构建项目时没有... 查看详情

django迁移脚本

...有问题,那么会将相关的迁移脚本的名字记录到数据库中django_migrations表中migrate怎么判断哪些迁移脚本需要执行?migrate会将代码中的迁移脚本和数据库中的迁移脚本 查看详情

带有 2 个数据库的 Django 迁移?

】带有2个数据库的Django迁移?【英文标题】:Djangomigrationwith2DBs?【发布时间】:2021-08-3013:29:00【问题描述】:我有数据库db1和db2。应该使用相同的迁移脚本创建两个DB的模式。Django文档提到了DATABASE_ROUTERS和RunPython,但到目前为... 查看详情

Django 最佳实践——迁移数据

】Django最佳实践——迁移数据【英文标题】:DjangoBestPractices--MigratingData【发布时间】:2019-01-0118:45:40【问题描述】:我有一个表格,其中包含必须由用户填写的数据。填充此数据后,状态将更改为“已完成”(状态是数据中的... 查看详情