2012-05-12 4 views
0

Я пытаюсь заполнить данные в своем db, и я бы хотел использовать API django для этого. Я написал модуль python, который позволяет мне это очень легко.запущенный модуль python из оболочки django (manage.py)

Однако, в пределах оболочки django (manage.py), не представляется возможным запустить мой файл «populate.py».

Возможно ли запустить мой populate.py из оболочки django? Или, альтернативно, должен ли я запускать обычный терминал python и импортировать необходимые компоненты django? В любом случае, я был бы очень признателен за некоторые указания.

+1

Вы пытались импортировать заполнение из оболочки django? импортировать; populate.main() или что-то в этом роде ... – vasek1

ответ

1

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

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import os, sys 
# If this script lives in a child directory of the main project directory 
# uncomment the following 2 lines: 
#dir_parent = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) 
#sys.path.insert(0, dir_parent) 

from django.core.management import setup_environ 
import settings 
setup_environ(settings) 

from django.db import transaction 

# import whatever you like from app.models or whatever 
# do random stuff. 

# If you are *changing* database records, 
# wrap your database code either in: 
@transaction.commit_manually 
def foo(): 
    ... stuff 
    transaction.commit() 

# OR end you script with: 
transaction.commit_unless_managed() 

Обновление для комментариев:

Переменная упоминалось выше, не является file, это __file__ (т.е. 2 подчеркивает file и еще 2 подчеркивания). Это всегда задается интерпретатором Python для полного пути к файлу, в котором он встречается. Как говорится в комментарии, если этот сценарий живет в дочернем каталоге основного каталога, каталог-каталог-файла имени файла дает вам имя каталога основного каталога проекта и добавив, что до sys.path убедитесь, что все ваши импортные работы работают правильно. Если сценарий живет в главной директории, и вы ее выполняете оттуда, тогда вам не нужно это делать.

+0

Спасибо! Тем не менее, теперь я получаю «Traceback (последний последний звонок): Файл« », строка 1, в dir = os.path.dirname (os.path.dirname (os.path.realpath (__ file__))) NameError: name '__file__' не определен " – snakesNbronies

+0

См. Мой обновленный ответ. –

+0

Спасибо! У меня просто были проблемы с синтаксисом. Работает сейчас. Тем не менее, я все же решил обернуть как пользовательскую команду django-admin, чтобы избежать необходимости в подобных вещах в будущем. – snakesNbronies

0

Попробуйте django-расширения, у вас есть команда сценария, которую вы ввели в каталог скриптов.

Как ни странно, команда, как представляется, отсутствует в основной документации, но если вы используете google django-extensions, вы найдете примеры и документацию.

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