Django: невозможно проверить таблицы базы данных в файл - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть база данных с 25 таблицами, и я хотел бы автоматически сгенерировать файл модели для моего проекта python. Для разработки проекта я использую PyCharm с MariaDB в качестве RDMS.

Основные настройки c для базы данных уже выполнены. На следующем шаге я переключаюсь на консоль 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>. ру». Но в этом случае символ «>» будет интерпретироваться как таблица, или необходимо указать имя таблицы.

Во втором случае я пытаюсь экспортировать только одну таблицу:

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?

1 Ответ

1 голос
/ 12 февраля 2020

Я предполагаю, что вы используете оболочку bash. Если нет, то это может быть вашей проблемой. Вам нужно использовать относительный путь к models.py, чтобы это работало. Если ваша структура каталогов выглядит следующим образом:

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

и вы запускаете команду из каталога root mysite (тот же каталог, в котором находится manage.py), то вам следует запустить команда вроде так:

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

...