0

我有一个包含大约 25 个表的数据库,我想为我的 python 项目自动生成模型文件。为了开发项目,我使用 PyCharm 和 MariaDB 作为 RDMS。

数据库的基本设置已经完成。在下一步中,我切换到 manage.py 控制台以运行第一个命令:

inspectdb

这工作正常。每个表都将在控制台窗口的输出中列出。现在我想将输出写入文件。因此我使用以下命令:

inspectdb > models.py

这最终导致错误:

Unable to inspect table '>'
# The error was: (1146, "Table 'mydatabase.>' doesn't exist")
# Unable to inspect table 'models.py'
# The error was: (1146, "Table 'mydatabase.models.py' doesn't exist")

Process finished with exit code 0

该命令根据文档“python manage.py inspectdb > model.py”。但在这种情况下,'>' 符号将被解释为表,或者必须给出表名。

在第二种情况下,我尝试只导出一个表:

inspectdb users > models.py

最终得到以下输出:

class Users(models.Model):
    name = models.CharField(max_length=400)
    username = models.CharField(max_length=150)
    email = models.CharField(max_length=100)
    password = models.CharField(max_length=100)
    .....

    class Meta:
        managed = False
        db_table = 'users'
# Unable to inspect table '>'
# The error was: (1146, "Table 'mydatabase.>' doesn't exist")
# Unable to inspect table 'models.py'
# The error was: (1146, "Table 'mydatabase.models.py' doesn't exist")

Process finished with exit code 0

这里同样的问题!在这种情况下,会生成模型用户,但不会将其写入 models.py 文件。我该怎么做才能将生成的模型保存到我的 models.py 文件中?

4

2 回答 2

1

我假设您使用的是 bash shell。如果没有,那可能是你的问题。您需要使用相对路径才能models.py使其正常工作。如果您的目录结构如下所示:

mysite/
    manage.py
    mysite/
    myapp/
        __init__.py
        admin.py
        migrations/
        models.py

并且您正在从根mysite目录(manage.py找到相同的目录)运行命令,那么您应该像这样运行命令:

python manage.py inspectdb users > myapp/models.py

于 2020-02-12T16:48:12.710 回答
0

不要使用 django-admin inspectdb,因为 django 不会“知道”您正在使用的设置。

只需使用python manage.py inspectdb yourtable

于 2021-08-07T14:07:25.920 回答