Django: стандартное расположение / соглашения для скриптов импорта данных? - PullRequest
2 голосов
/ 21 декабря 2010

Я работаю над несколькими проектами Django, и в большинстве из них у меня есть исходные данные для импорта.

Это не точные данные JSON, как показано в примерах приборов в Django docs - это, как правило, грязные файлы Excel или CSV. Сценарии имеют тенденцию выглядеть как следующий фрагмент, и я просто запускаю их как автономный Python, потому что я не знаю ничего лучше:

import sys
from django.core.management import setup_environ
sys.path.append(LOCATION OF YOUR DJANGO PROJECTS, EX: 'C:\django')
from mysite import settings
setup_environ(settings)

from PROJECT_NAME.APP_NAME.models import MODEL_NAME

import csv
reader = csv.reader(open(COMPLETE PATH TO YOUR DATA, EX: "C:/django/mysite/restaurants.csv"), dialect='excel')

for row in reader:
   COLUMN_ONE_TITLE = row[0]
   COLUMN_TWO_TITLE = row[1]

   MODEL_NAME.objects.get_or_create(MY_FIRST_COLUMN=COLUMN_ONE_TITLE, MY_SECOND_COLUMN=COLUMN_TWO_TITLE)

Я чувствую, что когда я фиксирую эти проекты в GitHub или отправляю их клиенту или кому-либо еще, я должен включить сценарии импорта. Они важная часть проекта.

Есть ли в Django стандартный способ хранения сценариев импорта, которые я написал для импорта этих данных?

Где в проекте они должны сидеть? Должен ли я использовать команды управления?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 21 декабря 2010

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

1 голос
/ 21 декабря 2010

Django поддерживает подключаемые сериализация модули.Если вы можете настроить форматы CSV для работы в качестве десериализатора, вы можете использовать обычную команду loaddata.

0 голосов
/ 21 декабря 2010

Сначала я бы предложил то, что предложили Мартин или Люк.

Но если по какой-то причине это не сработает, тогда имеет смысл поместить скрипт прямо в корень проекта git.Обратите внимание, я не предлагал помещать его в корень проекта django (хотя, честно говоря, это тоже не неправильная идея), но я предлагаю, чтобы проект django был подпапкой git-репозиторияпричина, по которой вы можете поместить эти вспомогательные файлы куда-нибудь, что не засоряет проект django.

0 голосов
/ 21 декабря 2010

Что если вы поместите весь этот код в служебную функцию? так что ваш views.py будет иметь from utils import csv_import или что-то в этом роде. Таким образом, ваши представления могут программно использовать эту функциональность.

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