mysqlclient mac python mysql django

python - mac - ¿Usando la capa de la base de datos Django fuera de Django?



mysql-python (8)

Basado en la respuesta de Hai Hu , aquí hay un script en funcionamiento, probado en Django 1.10 y 1.11. Primero importo aplicaciones base de Django porque son necesarias en muchas otras aplicaciones.

import os from django.conf import settings from django.apps import apps conf = { ''INSTALLED_APPS'': [ ''django.contrib.admin'', ''django.contrib.auth'', ''django.contrib.contenttypes'', ''django.contrib.messages'', ''django.contrib.sessions'', ''django.contrib.sitemaps'', ''django.contrib.sites'', ''django.contrib.staticfiles'', ''<your_app>'', ], ''DATABASES'': { ''default'': { ''ENGINE'': os.environ.get(''DB_ENGINE''), ''NAME'': os.environ.get(''DB_NAME''), ''USER'': os.environ.get(''DB_USER''), ''PASSWORD'': os.environ.get(''DB_PASSWORD''), ''HOST'': os.environ.get(''DB_HOST''), ''PORT'': os.environ.get(''DB_PORT''), } }, ''TIME_ZONE'': ''UTC'' } settings.configure(**conf) apps.populate(settings.INSTALLED_APPS) <import your app models here>

Tengo una buena base de datos que he creado en Django, y me gustaría interactuar con algunas secuencias de comandos de Python fuera de mi sitio web, por lo que tengo curiosidad si es posible usar la API de la base de datos de Django fuera de Django. sitio, y si es así, ¿alguien tiene información sobre cómo se puede hacer? Google no ha producido muchos éxitos para esto.


Para django 1.5 on (se admiten varias bases de datos), la configuración de DATABASE también cambió. Debes adaptar la respuesta anterior a ...

settings.configure( DATABASES = { ''default'': { ''ENGINE'': ''django.db.backends.postgresql_psycopg2'', ''NAME'': ''db_name'', ''USER'': ''db_usr'', ''PASSWORD'': ''db_pass'', ''HOST'': '''', ''PORT'': '''', }, }, TIME_ZONE = ''Europe/Luxembourg'' )


Para django 1.7, utilicé lo siguiente para ponerme en funcionamiento.

settings.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()


Para usar Django ORM desde otras aplicaciones necesita:

1) export DJANGO_SETTINGS_MODULE=dproj.settings

2) Agregue su carpeta de la aplicación Django a la ruta (puede hacerlo en el código de su aplicación no 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''


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'', )

De nuevo, asegúrese de ejecutar ese código antes de ejecutar, por ejemplo:

from your_app.models import *

Entonces solo usa la API DB como de costumbre.



La actualización de setup_environ se eliminará en django 1.6

Si puede importar su archivo settings.py, eche un vistazo al 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


import os, sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings") sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir))) from django.core.wsgi import get_wsgi_application application = get_wsgi_application() from app.models import MyModel