如何在MySQL中使用Django与现有数据库?

时间:2018-04-09 18:53:43

标签: python django django-models

我在Django 2.0中有一个应用程序,作为数据库引擎,我使用MySQL。我有一个问题,因为数据库以前已经创建并且已经有记录,我的想法是将这个数据库用于我正在创建的应用程序。

使用命令

python manage.py inspectdb > models.py

创建models.py文件,该文件将按照生成的models.py文件的指示进行清理。

#This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.

在此之后我继续执行:

python manage.py migrate
python manage.py makemigrations
python manage.py migrate

但它会产生以下错误:

(1050, "Table 'XXXXXXX' already exists")

显然它告诉我该表已经存在,但是如何不生成此错误并继续从Django管理表。

2 个答案:

答案 0 :(得分:0)

其中一件事(以及我不使用Django的主要原因)是它喜欢控制一切。它控制数据库这一事实意味着,如果你不是严格地在Django中开始,那么你做错了。

然而,有一项工作:

https://docs.djangoproject.com/en/2.0/howto/legacy-databases/

答案 1 :(得分:0)

您需要运行--fake-initial--fake。点击Django migrations了解更多信息。小心,因为运行inspectdb并不能解决所有问题。您需要手动修复models.py中的内容并再次迁移。