gct
Tengo una buena base de datos que creé en Django y me gustaría interactuar con ella a través de algunos scripts de Python. fuera de de mis cosas del sitio web. Tengo curiosidad por saber si es posible usar la API de la base de datos de Django fuera de un sitio de Django, y si es así, ¿alguien tiene alguna información sobre cómo se puede hacer? Google no ha arrojado muchos resultados útiles para esto.
Solo necesita configurar los ajustes de Django antes de realizar cualquier llamada, incluida la importación de sus modelos. Algo como esto:
from django.conf import settings
settings.configure(
DATABASE_ENGINE = 'postgresql_psycopg2',
DATABASE_NAME = 'db_name',
DATABASE_USER = 'db_user',
DATABASE_PASSWORD = 'db_pass',
DATABASE_HOST = 'localhost',
DATABASE_PORT = '5432',
TIME_ZONE = 'America/New_York',
)
Nuevamente, asegúrese de ejecutar ese código antes de ejecutarlo, por ejemplo:
from your_app.models import *
Luego, simplemente use la API DB como de costumbre.
-
Tengo un conector (paquete) para conectarme a la base de datos de Hive, y puedo importarlo en un programa de python y obtener los datos de la base de datos de Hive. ¿Dónde coloco ese conector, es decir, en qué carpeta coloco y cómo nombro mi DATABASE_ENGINE? Gracias de antemano.
– Thirumalreddy_Bandi
7 de junio de 2016 a las 11:03
-
¿Qué bibliotecas necesitamos agregar a requirements.txt para obtener esto?
– Pratik Khadloya
27 de febrero de 2018 a las 18:25
-
Me encuentro con un error que he documentado aquí stackoverflow.com/questions/49015994/…
– Pratik Khadloya
27 de febrero de 2018 a las 18:55
-
¿No sería suficiente simplemente importar el
settings.py
con todo esto, que ya existe en el proyecto?– Daniel W.
22 de junio de 2019 a las 13:48
Charla
Para django 1.7, utilicé lo siguiente para ponerlo en marcha.
configuración.py:
from django.conf import settings
settings.configure(
DATABASES={
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'name',
'USER': 'usr',
'PASSWORD': 'secret',
'HOST': '127.0.0.1',
'PORT': '5432',
},
},
TIME_ZONE='America/Montreal',
)
En el archivo que contiene la rutina de inicio
import os
import django
import v10consolidator.settings
from myapp.models import *
os.environ.setdefault(
"DJANGO_SETTINGS_MODULE",
"myapp.settings"
)
django.setup()
Dmitri Shevchenko
Actualizar setup_environ se eliminará en django 1.6
Si puede importar su archivo settings.py, entonces echar un vistazo en el práctico comando setup_environ.
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
#here you can do everything you could in your project
-
¡Obsoleto! setup_environ, te extrañaré
– Robo B
24 de febrero de 2013 a las 5:18
-
Consulte mi pregunta de seguimiento para ver alternativas: stackoverflow.com/questions/15048963/…
– Robo B
25 de febrero de 2013 a las 18:43
Raúl
Estaba buscando respuestas para django 3.0 y ninguno de los métodos anteriores funcionó exactamente para mí.
Leí los documentos oficiales en https://docs.djangoproject.com/en/3.0/topics/settings/ y estos scripts funcionaron para mí.
Estructura del proyecto
mysite
mysite
...
settings.py
db.sqlite3
db_tasks.py
manage.py
polls
db_tasks.py:
import os
import django
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
django.setup()
from polls.models import Question
print(Question.objects.all())
out: <QuerySet [<Question: WTU?]>
daniel rosaman
Una opción final que nadie ha mencionado: una disfraz ./manage.py
subcomando.
-
Yo diría que esta es la forma correcta de hacerlo, en mi opinión.
– Thibault J.
7 de agosto de 2013 a las 12:46
-
Enlace actualizado a la documentación: docs.djangoproject.com/en/dev/howto/custom-management-commands
– Gary
27 de febrero de 2014 a las 19:27
Artem
Aquí está el código que uso. solo reemplaza your_project
con el nombre de tu proyecto Django, yourApp
con el nombre de tu aplicación Django, any_model
con el modelo que desea usar en el archivo de modelos y any_fild
con el campo que desea obtener de la base de datos:
from django.conf import settings
import django
from your_project.settings import DATABASES, INSTALLED_APPS
settings.configure(DATABASES=DATABASES, INSTALLED_APPS=INSTALLED_APPS)
django.setup()
from yourApp.models import *
print(any_model.objects.all()[0].any_fild)
-
Yo diría que esta es la forma correcta de hacerlo, en mi opinión.
– Thibault J.
7 de agosto de 2013 a las 12:46
-
Enlace actualizado a la documentación: docs.djangoproject.com/en/dev/howto/custom-management-commands
– Gary
27 de febrero de 2014 a las 19:27
Juanjo Conti
Para usar Django ORM desde otras aplicaciones necesitas:
1) export DJANGO_SETTINGS_MODULE=dproj.settings
2) Agregue la carpeta de su aplicación Django a la ruta (puede hacerlo en el código de su aplicación que no es Django):
sys.path = sys.path + ['/path/to/your/app/']
3) Si usa SQLite, use la ruta completa al archivo db en settings.py:
DATABASE_NAME = '/path/to/your/app/base.db'
-
Como una alternativa hacky para configurar la variable de entorno correctamente, puede poner os.environ[‘DJANGO_SETTINGS_MODULE’]=dproj.settings en la parte superior antes de importar los módulos de su aplicación. Eso solo cambia DJANGO_SETTINGS_MODULE durante la duración de ese proceso.
– twneale
1 de febrero de 2010 a las 22:33
-
Este es un muy buen enfoque, no duplicar la configuración en lugar de la respuesta aceptada. Además, si la configuración de Django ya contiene la ruta absoluta al archivo SQLite, que es el caso con las versiones actuales de Djangodespués el paso 3 ya no es necesario. Haciéndola la solución más compacta.
– Anuncio N
3 de octubre de 2015 a las 9:07