将遗留的 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 项目,它基本上是旧系统的新改进版本,由 php 和 mysql 提供支持。
现在我需要将 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 驱动的数据结构中的主要内容,如果未能解决你的问题,请参考以下文章