Что мне нужно импортировать, чтобы получить доступ к моим моделям?

Я хочу запустить сценарий для заполнения моей базы данных. Я хотел бы получить к нему доступ через API базы данных Django.

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

Как этого добиться?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
8
0
1 303
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

В дополнение к файлам ваших собственных моделей вам также необходимо импортировать модуль настроек.

Ответ принят как подходящий

Импортируйте и свой модуль настроек

import os
os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"

from mysite.polls.models import Poll, Choice

должен сделать свое дело.

Если вы используете аргумент shell для сценария manage.py в каталоге вашего проекта, вам не нужно импортировать настройки вручную:

$ cd mysite/
$ ./manage.py shell
Python 2.5.2 (r252:60911, Jun 10 2008, 10:35:34) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from myapp.models import *
>>>

Для неинтерактивного использования вы можете реализовать настраиваемая команда и запустить его с manage.py.

Если я чего-то не упускаю, в manage.py нет подкоманды runscript в Django 1.0. Если вы используете настраиваемое приложение для обеспечения этой функциональности, вы должны упомянуть об этом.

Andre Miller 26.06.2009 15:38

Это то, что у меня есть в верхней части одного из моих скриптов загрузки данных.

import string
import sys
try:
    import settings # Assumed to be in the same directory.
    #settings.DISABLE_TRANSACTION_MANAGEMENT = True
except ImportError:
    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
sys.exit(1)

#Setup the django environment with the settings module.
import django
import django.core.management
django.core.management.setup_environ(settings)

from django.db import transaction

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

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

Кроме того, в зависимости от того, что вы делаете, вы можете или не хотите делать все это за одну транзакцию. Раскомментируйте строку транзакции выше и структурируйте свой код, как это.

transaction.enter_transaction_management()
try:
    #Do some stuff
    transaction.commit()
finally:
    transaction.rollback()
    pass
transaction.leave_transaction_management()

+1, при запуске в корне моего проекта принятый выше ответ не работает, а ваш - работает!

pufferfish 14.07.2009 15:49

Разве строка «sys.exit (1)» не должна иметь отступ?

Peter Mortensen 01.02.2010 01:45

Самое чистое решение - добавить расширения django.

(virt1)tsmets@calvin:~/Documents/prive/rugby-club/proposal/kitu$ yolk -l
Django          - 1.3.1        - active 
Pygments        - 1.4          - active 
Python          - 2.6.5        - active development (/usr/lib/python2.6/lib-dynload)
django-extensions - 0.7.1        - active 
pip             - 1.0.2        - active 
setuptools      - 0.6c11       - active 
wsgiref         - 0.1.2        - active development (/usr/lib/python2.6)
yolk            - 0.4.1        - active 

Список возможных команд затем расширяется, среди прочего, командой runscript.

Другие вопросы по теме