我们有一个带有 MySQL 数据库的基于 php 的站点。我们有大量的用户、订单、发票等数据。现在我们想使用 Django 和 MySQL 甚至 MongoDB 重新设计我们的站点应用程序。
对我们来说,将所有桌子完全按照以前的状态移动非常重要,而且不会造成任何损失。有没有办法做到这一点?我们可以在 Django 中定义新模型并将它们重定向到具有相同名称的现有数据表,然后导入以前的数据库吗?
如果真的有办法做到这一点,那是什么?如果有人知道实用的方法,我将不胜感激。
我们有一个带有 MySQL 数据库的基于 php 的站点。我们有大量的用户、订单、发票等数据。现在我们想使用 Django 和 MySQL 甚至 MongoDB 重新设计我们的站点应用程序。
对我们来说,将所有桌子完全按照以前的状态移动非常重要,而且不会造成任何损失。有没有办法做到这一点?我们可以在 Django 中定义新模型并将它们重定向到具有相同名称的现有数据表,然后导入以前的数据库吗?
如果真的有办法做到这一点,那是什么?如果有人知道实用的方法,我将不胜感激。
哎呀!迁移是艰难的。
首先,备份您可以测试的数据库(这可能是给定的,但需要说明。)您实际上可以使用mysqldump
直接转储到新的 MySQL 数据库。
大部分可以帮助您入门的内容都在Django 的使用“遗留数据库”的文档中。
粗略地说,使用您的数据库连接参数和数据库名称设置一个 Django 应用程序。您需要编辑DATABASES
设置并为这些键分配值:
NAME
ENGINE
USER
PASSWORD
HOST
PORT
首先,有一个名为的内置实用程序inspectdb
可以根据您的数据库生成模型。
python manage.py inspectdb
Keep in mind that this is only a first pass, and you'll likely have to fix some of it by hand. Once you get the output cleaned up, save it as models.py and add it to your INSTALLED_APPS
setting. You'll also need to set managed=True
in each of your model's internal class Meta
.
After all this is done, run
python manage.py migrate
You will probably have to tweak this over and over to get it right. I highly recommend having backups and a good (maybe automated) setup to keep testing and tweaking to get it right.