Ci sono un sacco di risposte là fuori che funzionano con le versioni precedenti di Django, ma Django è in costante aggiornamento e nella mia ricerca non ho trovato risposte valide per Django 1.8/1.9, quindi ho dovuto girare il mio. Ecco come si fa:
Progetto Struttura:
├── data
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ └── models.py
├── main.py
├── manage.py
└── settings.py
La directory data
directory e migrazioni contengono vuoti __init__.py
file. Il file di esempio models.py
legge come segue:
from django.db import models
class User(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField(max_length=255)
Il file manage.py
è il tipico file di Django manage.py
. Basta essere sicuri di modificare il parametro impostazioni os.environ.setdefault
se si copia da un comando fresco 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)
Il file settings.py
richiede 3 impostazioni: Data Base, INSTALLED_APPS e SECRET_KEY. Fare riferimento alla documentazione Django per DB che non sono SQLite:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'sqlite.db',
}
}
INSTALLED_APPS = (
'data',
)
SECRET_KEY = 'REPLACE_ME'
Il vero trucco sta nel main.py
, che sarà in cui è possibile codificare contro i tuoi modelli. A quanto pare è necessario utilizzare wsgi
per ottenere le cose a lavorare con queste due righe:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Ecco un main.py campione:
# 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="[email protected]")
user.save()
# Application logic
first_user = User.objects.all()[0]
print(first_user.name)
print(first_user.email)
This project insieme this post erano punti di partenza utile per me per trovare la risposta e la mia richiesta di pull con codice di lavoro per Django 1.9 è stata unita, quindi ora puoi prendere il codice dal repository di masnun. Se conosci un modo migliore, invia una richiesta di pull.
Possibile duplicato di [Utilizzare Django ORM come standalone] (http://stackoverflow.com/questions/937742/use-django-orm-as-standalone) – user1797792
Accetto, la domanda è duplicata di "use-django-orm-as -standalone "e" Usa solo alcune parti di Django?"e" using-only-the-db-part-of-django "ma le risposte sono per le versioni precedenti di django, se chiudo questa domanda, ci vorranno anni affinchè qualcuno scriva la risposta per l'ultima versione e per farlo prima o seconda risposta –
Possibile duplicato di [Uso di django per lo strumento CLI] (http://stackoverflow.com/questions/32088702/using-django-for-cli-tool) – e4c5