Завершите django сброс DB

Как я полностью сбрасываю своего Django (1,2 альфы) DB (отбрасывающий все таблицы, вместо того, чтобы просто очистить их)?

manage.py flush делает слишком мало (не будет работать, если будут изменения схемы), и manage.py reset требует, чтобы я определил все приложения (и, кажется, берет формат, который отличается от просто "" .join (INSTALLED_APPS)). Я могу, очевидно, достигнуть этого в особенном методе DB, но я полагал, что должен быть нормальный, агностик бэкенда DB способ сделать это.

[Редактирование: я ищу что-то, что я могу назвать из сценария, например, Make-файла, и это продолжает работать, если я изменяю DB бэкенда или добавляю к settings.INSTALLED_APPS]

17
задан as. 18 February 2010 в 15:10
поделиться

5 ответов

Этот сниппет дает вам код команды manage.py reset_db, которую вы можете установить, это минимальное изменение, которое решит вашу проблему


Тем не менее, из комментариев ниже:

С таким же успехом вы можете просто установить командные расширения Django, чтобы получить reset_db и другие полезности: https://github.com/django-extensions/django-extensions

17
ответ дан 30 November 2019 в 14:06
поделиться

Просто назначьте новую базу данных и удалите эту базу данных из консоли базы данных. Как мне кажется, самый простой.

0
ответ дан 30 November 2019 в 14:06
поделиться

Вы хотите sqlreset:

% python manage.py help sqlreset
Usage: manage.py sqlreset [options] <appname appname ...>

Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given app name(s).

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
                        Verbosity level; 0=minimal output, 1=normal output,
                        2=all output
  --settings=SETTINGS   The Python path to a settings module, e.g.
                        "myproject.settings.main". If this isn't provided, the
                        DJANGO_SETTINGS_MODULE environment variable will be
                        used.
  --pythonpath=PYTHONPATH
                        A directory to add to the Python path, e.g.
                        "/home/djangoprojects/myproject".
  --traceback           Print traceback on exception
  --version             show program's version number and exit
  -h, --help            show this help message and exit

Как и при изменении модели, Django не будет автоматически делать это за вас. Он только выведет команды для копирования и вставки.

1
ответ дан 30 November 2019 в 14:06
поделиться

Не уверенный, что вы хотите, но смотрите на эти события для ContextMenu и MenuItem:

ContextMenu:

http://msdn.microsoft.com/en-us/library/system.windows.controls.contextmenu_events.aspx

MenuItem:

http://msdn.microsoft.com/en-us/library/system.windows.controls.menuitem_events.aspx

я думаю ContextMenuOpening и , ContextMenuClosing мог бы быть интересным;)

-121--3894336-

Hm, может быть, вы лжете manage.py, делая вид, что делают приспособления, но только для поиска приложений:

apps = $ (python manage.py makefixture 2 > & 1 | egrep -v '(^ Ошибка | ^ django)' | awk -F. «{print $2}» | uniq); для i в приложениях $; do python manage.py sqlreset $ i; done | grep DROP

Выводит список инструкций DROP TABLE для всех таблиц приложений проекта, исключая таблицы django. Если вы хотите включить их, удалите | ^ django образцов vom egrep.

Но как подать правильный бэкэнд базы данных? sed/awk-ing через settings.conf? Или лучше, используя небольшой settings.conf-чтение python скрипт сам.

0
ответ дан 30 November 2019 в 14:06
поделиться

посмотрите на команду reset в коде django и напишите свою собственную, которая сначала сбрасывает/создает DB.

-1
ответ дан 30 November 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: