2013-10-06 2 views
0

Я уже рассмотрел несколько вопросов по этому вопросу и не нашел решения для моего конкретного случая. Проблема, с которой я столкнулся сейчас, - это мой файл sqlite db, который вычищается, когда я пытаюсь сохранить(), чтобы вставить новую строку из скрипта Python. Однако этого не происходит при использовании тех же шагов из одного из моих приложений Django.Почему файл db Django sqlite, который был уничтожен скриптом Python?

Есть ли какая-то дополнительная настройка, которую мне нужно иметь, чтобы использовать мою модель Django для работы с внешним скриптом Python, который не упоминается ниже?

В сценарии Python я уже добавил следующее в верхней части файла:

sys.path.append(my_project_path) 
os.environ['DJANGO_SETTINGS_MODULE']='settings' 
from django.conf import settings 

Я также перепроверены по следующим пунктам:

  1. Мои настройки модуля имеет абсолютный путь для ИМЯ ДБ.
  2. Когда я запускаю файл DB и запускаю python manage.py syncdb, создается таблица I ; размер файла DB составляет приблизительно 50 тыс. после этой инициализации .

Это поведение я вижу:

  • После запуска пункт 2 выше, я могу успешно создавать новые строки для моей таблицы из моего приложения Django.
  • После выполнения пункта 2 выше, когда используется модель Django из сценария Python, я получаю DatabaseError, указав, что «нет такой таблицы». Кроме того, файл sqlite db переходит в нулевой размер, когда это происходит.

Есть ли что-то, что мне не хватает, когда я могу использовать модель Django из другого сценария Python? Я использую этот скрипт в качестве инструмента для некоторых ручных обновлений и действительно хотел бы заставить его работать.

Вот быстрый пример моей установки:

Справочники:

myproject/ 
myproject/myapp/ 
myproject/tools/ 

Модель Django проживает MyProject/MyApp/и сценарий заключается в MyProject/инструментов /. PYTHONPATH включает myproject /. В сценарии, у меня есть следующие:

import os 
import sys 

sys.path.append(absolute_path_to_myproject) 
os.environ['DJANGO_SETTINGS_MODULE']='settings' 
from django.conf import settings 

import myapp.models 

my_model = myapp.models.my_model(name = 'TestName') 
my_model.save() 
+1

Оказывается, эта проблема возникла из-за чего-то еще в среде, искажающей файл и не связанной с кодом. – Hazok

ответ

0

Вы не были достаточно детализированы ваши настройки, но это звучит как есть лучший способ сделать это.

Django уже управляет подключениями к базе данных, поэтому нет необходимости обращаться к фактическому файлу sqlite. Просто запустите свой скрипт в сеансе django, используя «python manage.py my_script». Вот как это сделать: https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

+0

Я не пытался напрямую обращаться к файлу sqlite, и поэтому я импортирую настройки django, как указано выше. То, о чем я упомянул, это наблюдение за конечным состоянием, что файл sqlite был уменьшен до размера 0 после того, как я дошел до «нет такой таблицы» DatabaseError. Я все еще наращиваю Django и еще не использовал команды управления, поэтому я попробовал их для этого сценария. Даже при вызове этого из manage.py эта проблема все еще происходит.Обновите вопрос на примере моей текущей настройки. – Hazok

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