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

时间:2014-02-04 16:35:25

标签: php mysql django integration django-south

我们有一个Django项目,我们在过去几个月里一直在工作,它基本上是由PHP和mySQL驱动的旧系统的新改进版本。

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

我已经创建了一个新的Django项目名称'integration',然后运行

pytohn django-admin.py inspectdb > models.py

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

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

问题是:

  1. 首先,理论上可以通过这种方式处理这项任务,纯粹是从此后的南方迁移。

  2. 如何从inspect db的输出中丢失令人讨厌的id(PK = true)列以及Meta类中的database_name属性,而不会破坏它。

  3. 当对模型进行重大更改(每次多个字段,每个字段的名称,长度和类型)时,无论如何都要明确告诉南哪个字段是哪个,所以现有列中的数据会正确迁移吗?

  4. 显然,这是我的第一个这种规模的整合项目,对所有无知的问题感到抱歉。

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

    最好是通过感应(从较大的,更中心的物体,到较小的物体)或通过演绎(反过来)?。

1 个答案:

答案 0 :(得分:1)

我之前只尝试过一次数据库内省,并且在我可以使用它之前放弃了项目,所以请将以下建议视为理论上的。顺便说一句,我反省的db是带有ISAM引擎的MySQL - 至少,我认为是。

我从有限的经验中记得的是,ForeignKey关系总是被检测为IntegerFields。但是,将IntegerField更改为ForeignKey字段并没有造成任何问题,IIRC。然后,该项目在我可以随身携带之前就被放弃了。

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

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

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

祝你好运!