2017-01-10 2 views
0

Итак, у меня есть эта установка django, в которой есть куча сценариев миграции. Они выглядят так:Как создать новую таблицу с помощью модели

00001_initial.py 
00002_blah_blah.py 
00003_bleh_bleh.py 

Теперь я знаю, что это «здание базы данных» сценарии, которые будут принимать вещи, определенные в models.py и запускать их с БД, чтобы «создать» таблицы и прочее.

Я хочу создать новую таблицу (поэтому я создал ее определение в models.py). Для этого я скопировал еще один класс модели и отредактировал его имя и поля, и все в порядке. Позволяет называть этот новый класс класса «бум».

Вопрос теперь в том, как мне «создать» эту таблицу стрел с помощью сценария миграции и модели стрелы?

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

Я знаю, что у него есть что-то делать с manage.py и работает migrate или runmigration (или это sqlmigrate? ... им путать). При создании таблицы стрелы, я не хочу, чтобы база данных идти бум, если вы знаете, что я имею в виду :)

+1

Что это связано с ruby-on-rails и mongo/mysql? Вы должны действительно сделать учебник django, чтобы узнать, как работают миграции django. – Sayse

+0

Они были предложены SO. Я не хотел неуважительно относиться к системе ... –

ответ

2

Сначала создайте резервную копию своей базы данных. Скопируйте его на свою машину разработки. Попробуйте все об этом. Таким образом, это не имеет значения, если он по какой-то причине «бум».

Первое, что нужно сделать, это

python manage.py showmigrations 

Это показывает все существующие миграции, и должны показать, что они были применены с [X].

Затем

python manage.py makemigrations 

делает новый файл миграции для новой модели (имя 00004 _...).

Затем сделайте

python manage.py migrate 

применять его. Чтобы отменить его, вернитесь в состояние миграции 00003, с

python manage.py migrate <yourappname> 00003 
+0

Опция -list - это удобный инструмент! Благодарим вас за ваше терпение, чтобы объяснить это хорошо. –

+0

один довольно глупый вопрос, если я могу .... Как найти ? это в каком-то файле настроек/конфигурации? –

+0

Обычно это имя каталога, в котором находится model.py. Он должен быть указан в настройке INSTALLED_APPS в settings.py. Migrate --list также группирует миграции по имени приложения. – RemcoGerlich

2

My question is now how do I "create" this boom table using the migration script and the boom model?

./manage.py makemigrations 

I am worried that I might accidentally disrupt anything that is already in DB.

Весь смысл миграций, является то, что она Безразлично» т

I know that it has something to do with manage.py and running migrate or runmigration

для получения дополнительной информации, пожалуйста, обращайтесь: https://docs.djangoproject.com/en/1.10/topics/migrations/

И будьте уверены, что ваша база данных не будет развиваться! :-)

+0

Спасибо за ответ. Я сделал RTFM, но, к сожалению, это не серебряная пуля :) Некоторые из нас не понимают этого, как и другие, знаете ли? иначе моя бабушка была бы кодером, читающим их ... –

+1

спасибо @Sayse за это – e4c5

+0

Извините, изменил последнюю часть моего ответа. Надеюсь, мы по-прежнему можем сделать хороший кодер из вашей бабушки :-) – e4c5

2

В Django есть два шага для миграции.

./manage.py makemigrations 

будет создавать файлы миграции, которые вы видите - они описывают изменения, которые должны быть внесены в базу данных.

Вы также должны запустить

./manage.py migrate 

это будет применять миграции и фактически запустить альтер команды таблицы в SQL для изменения фактической структуры базы данных.

Обычно добавление полей или таблиц не влияет ни на что другое в базе данных. Будьте осторожны при изменении или удалении существующих полей, поскольку это может повлиять на ваши данные.

Причина для двух шагов заключается в том, что вы можете вносить изменения в dev-машину и после счастливой фиксации файлов переноса и выпускать в свою производственную среду. Затем вы запустите команду migrate на своей производственной машине, чтобы привести производственную базу данных в то же состояние, что и ваша dev-машина (нет необходимости в makemigrations на производстве, предполагая, что ваши базы данных стали такими же).

+0

Спасибо, сэр. Вы замечательный. Это именно то, что я хотел - точный и хорошо объясненный. Хотелось бы, чтобы я мог +1 вас больше одного раза! –

+0

вы могли бы принять ответ тогда .... :) –

+0

Мне нужно подождать, так говорит ТАК :) –

Смежные вопросы