Как использовать Django 1.8.5 ORM без создания проекта django?

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

Думаю, я все еще могу
from django.db import models
и создавать модели, но затем без manage.py как бы я мог выполнять миграцию и синхронизацию?

  • Класс Python Enum (с tostring fromstring)
  • Как определить, был ли загружен один модуль до или после другого
  • Sl4A Передача намерения в минималистичный текстовый виджет
  • Чтение форматированных чисел FORTRAN с помощью Python
  • Как Pretty Печать CSV-файла в Python
  • Python: двухкристальный гауссовский фитинг с нелинейными наименьшими квадратами
  • Вернуть RDD из takeOrdered вместо списка
  • Python memoising / отложенный искатель свойств поиска
  • 3 Solutions collect form web for “Как использовать Django 1.8.5 ORM без создания проекта django?”

    Есть много ответов, которые работают со старыми версиями Django, но Django постоянно обновляется, и в моих исследованиях я не нашел жизнеспособного ответа для Django 1.8 / 1.9, поэтому мне пришлось сворачивать самостоятельно. Вот как вы это делаете:

    Структура проекта:

     ├── data │  ├── __init__.py │  ├── migrations │  │  └── __init__.py │  └── models.py ├── main.py ├── manage.py └── settings.py 

    Каталог data каталог миграций содержат пустые файлы __init__.py . Файл sample models.py читается следующим образом:

     from django.db import models class User(models.Model): name = models.CharField(max_length=255) email = models.EmailField(max_length=255) 

    Файл manage.py является типичным файлом Django manage.py . Просто не забудьте изменить параметр параметров в os.environ.setdefault если вы скопируете его из django-admin startproject команды django-admin startproject :

     #!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) 

    Для файла settings.py требуются 3 настройки: DATABASES, INSTALLED_APPS и SECRET_KEY. Обратитесь к документам Django для DB, которые не являются SQLite:

     DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'sqlite.db', } } INSTALLED_APPS = ( 'data', ) SECRET_KEY = 'REPLACE_ME' 

    Реальный трюк находится в main.py , который будет содержать код для ваших моделей. По-видимому, вам нужно использовать wsgi для работы с этими двумя строками:

     from django.core.wsgi import get_wsgi_application application = get_wsgi_application() 

    Вот пример main.py:

     # Django specific settings import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") ### Have to do this for it to work in 1.9.x! from django.core.wsgi import get_wsgi_application application = get_wsgi_application() ############# # Your application specific imports from data.models import * #Add user user = User(name="someone", email="someone@example.com") user.save() # Application logic first_user = User.objects.all()[0] print(first_user.name) print(first_user.email) 

    Этот проект вместе с этим сообщением был полезным отправным пунктом для меня, чтобы найти ответ, и мой запрос на тягу с рабочим кодом для Django 1.9 был объединен, так что теперь вы можете захватить код из repo masnun. Если вы знаете лучший способ, отправьте запрос на тяну.

    Документация Django 1.11 о загрузке приложений

    Для последней версии проекта проекта django будет-

     |--myproject |--main.py |--manage.py |--myapp | |--models.py | |--views.py | |--admin.py | |--apps.py | |--__init__.py | |--migrations |--myproject | |--settings.py | |--urls.py | |--wsgi.py | |--__init__.py 

    Вам все равно понадобится manage.py для запуска миграции, main.py – ваш автономный скрипт

     # main.py import os import django os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' django.setup() from myapp.models import MyModel print(MyModel.objects.all()[0]) 
     import os from django.conf import settings from django.apps import apps conf = { 'INSTALLED_APPS': [ 'Demo' ], 'DATABASES': { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join('.', 'db.sqlite3'), } } } settings.configure(**conf) apps.populate(settings.INSTALLED_APPS) 

    Тест на django 1.11.x

    Python - лучший язык программирования в мире.