Django 2.0 Заполнение базы данных скриптом

Python Noob спросил: 13 июня 2018 в 09:47 в: django

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

from my_app.models import ModelInApp
import djangodjango.setup()def add_data(data1, data2):
    d, created = ModelInApp.objects.get_or_create(data1=data1, data2=data2)
    print("- Data: {0}, Created: {1}".format(str(d), str(created)))
    return ddef populate():
    # data is a list of lists
    for row in data:
        data1 = row[0]
        data2 = row[1]
        add_data(data1, data2)if __name__ == "__main__":
    populate()

Переменная данных - это список списков, содержащих данные, которые я хочу поместить в мою базу данных. Проблема в том, что когда я запускаю скрипт, я получаю ошибку django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.. Я использую PostgreSQL в качестве базы данных.

Что я делаю неправильно?

1 ответ

Есть решение
nad_rom ответил: 13 июня 2018 в 09:58

Быстрый способ работать с ним - это заполнить свою БД из оболочки Django (python manage.py shell). Ваш код без import django и django.setup() должен работать нормально. Быстрый & dirty;)

Сверхправильный способ добавления данных - использовать миграцию данных: https://simpleisbetterthancomplex.com/tutorial/2017/09/26/how-to-create-django-data- migrations.html

Кроме того, подумайте об использовании bulk_create, чтобы сделать вещи более эффективными (сначала отфильтруйте список данных, чтобы избежать дублирования)

Дополнительное видео по вопросу: Django 2.0 Заполнение базы данных скриптом

Django. Урок 6. Работа с базой данных

3. Знакомимся с БД в Django

1.2 Делаем сайт на Django и Python: добавляем модель, джанго-админку, сохраняем данные в базе данных