将遗留的 mySQL 数据库集成到新的 Django ORM 驱动的数据结构中

Posted

技术标签:

【中文标题】将遗留的 mySQL 数据库集成到新的 Django ORM 驱动的数据结构中【英文标题】:Integration of legacy mySQL database into a new Django ORM powered data structure 【发布时间】:2014-02-28 18:04:47 【问题描述】:

过去几个月我们一直在研究一个 Django 项目,它基本上是旧系统的新改进版本,由 phpmysql 提供支持。

现在我需要将 mySQL 表中的所有旧数据转换为新的 Django - 基于 ORM 的数据结构。

我已经创建了一个新的 Django 项目名称“集成”,并运行

python django-admin.py inspectdb > models.py

结果不是那么好,因为我们使用的是 MyISAM DB 引擎,模型之间没有明确的关系。

此外,模型的设计也有很大不同,尽管底线是相同的(否则表示相同的数据)。

问题是:

    首先,这个任务理论上可以这样处理吗,纯粹是从这里开始的南迁。

    我怎样才能从inspect db 的输出中丢失讨厌的id(PK=true) 列和Meta 类中的database_name 属性而不破坏它们。

    在对模型进行重大更改时(每次更改几个字段,每个字段的名称、长度和类型),是否有明确告诉南哪个字段是哪个字段,因此现有列中的数据将被迁移正确吗?

显然这是我的第一个这种规模的集成项目,对于所有无知的问题,我们深表歉意。

你会推荐什么方法?有什么工具可以帮助我吗?

是通过归纳法(从更大、更中心的对象到较小的对象)还是通过演绎法(相反)更好?

【问题讨论】:

【参考方案1】:

我之前只尝试过一次数据库自省,并且在我能够使用它之前就放弃了该项目,因此请将以下建议仅视为理论上的。顺便说一句,我自省的数据库是一个带有 ISAM 引擎的 MySQL——至少,我认为它是。

根据我有限的经验,我确实记得 ForeignKey 关系总是被检测为 IntegerFields。但是,将 IntegerField 更改为 ForeignKey 字段并没有引起任何问题,IIRC。话又说回来,我还没来得及做这个项目就被放弃了。

这是我在尝试该过程时使用的文章:Tutorial: Using Django's Multiple Database Support

我还从这篇文章中获得了有用的信息:Administer WordPress using Django's Admin。

最后,the official Django docs - 他们是微薄的,但是嘿,他们是官方的! :)

祝你好运!

【讨论】:

以上是关于将遗留的 mySQL 数据库集成到新的 Django ORM 驱动的数据结构中的主要内容,如果未能解决你的问题,请参考以下文章

将现有程序集成到新的 GUI

为什么说RPA是金融科技领域的重要推动者?

为什么说RPA是金融科技领域的重要推动者?

为什么说RPA是金融科技领域的重要推动者?

为什么说RPA是金融科技领域的重要推动者?

sql 使用MySQL将大型Neos NodeTree移动到新的Parent