Django sqlmigrate не показывает сырье sql - PullRequest
0 голосов
/ 17 марта 2020

Я пытался получить необработанный sql из Django файла переноса.

Я предпринял следующие шаги:

$ python manage.py makemigrations

$ python manage.py sqlmigrate app_name 0001

и raw Команда sql должна отображаться, но результат содержит только:

BEGIN;
--
-- Create model User
--
--
-- Create model Config
--
COMMIT;

Как получить необработанный sql из sqlmigrate?

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Я прочитал исходный код sqlmigrate и обнаружил, что добавление имени БД для миграции может работать.

Таким образом, рабочая версия будет выглядеть так:

$ python manage.py sqlmigrate app_name 0001 --database = db_name

Исходный код находится здесь: https://github.com/django/django/blob/master/django/core/management/commands/migrate.py

0 голосов
/ 17 марта 2020

В соответствии с документацией sqlmigrate он будет печататься только в не необработанном формате SQL; он не будет печатать в сыром виде, как вы ожидаете. Однако вы можете использовать следующий метод для получения всех необработанных SQL, которые Django выполнили.

Django -extensions имеют команду shell_plus с параметр print-sql

./manage.py shell_plus --print-sql

В оболочке django будут выполнены все выполненные запросы

Например:

User.objects.get(pk=1)
SELECT "auth_user"."id",
       "auth_user"."password",
       "auth_user"."last_login",
FROM "auth_user"
WHERE "auth_user"."id" = 1

Execution time: 0.002466s [Database: default]

<User: username>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...