2017-05-31 5 views
0

Also ich baue eine Django-Site, die Verbindung zu einer Ansicht Legacy-DBs ist. Wegen einiger Einschränkungen der älteren MySQL dbs muss ich auf eine Ansicht zugreifen. Von dem, was ich sagen kann, ist der einfachste Weg, sql direkt einzufügen. (Inspectdb funktioniert nicht für die Ansichten).Django DATABASES sind nicht konfiguriert

Hier ist der Code, die ich bisher habe:

from django.db import connection 

cursor = connection.cursor() 

sqlstring = 'SELECT * FROM Site_Call_Counts' 

cursor.execute(sqlstring) 
result = cursor.fetchall() 

Dieser Code funktioniert, wenn ich es in die manage.py shell aber Pausen geben, wenn ich versuche und es vollständig ausgeführt werden. Hier ist die Rückverfolgung.

/usr/bin/python2.7 /root/Desktop/IPNV/django-test/src/djangotest/viewTest.py 
Traceback (most recent call last): 
    File "/root/Desktop/IPNV/django-test/src/djangotest/viewTest.py", line 3, in <module> 
    cursor = connection.cursor() 
    File "/usr/local/lib/python2.7/dist-packages/django/db/__init__.py", line 33, in __getattr__ 
    return getattr(connections[DEFAULT_DB_ALIAS], item) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 208, in __getitem__ 
    self.ensure_defaults(alias) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 176, in ensure_defaults 
    conn = self.databases[alias] 
    File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 35, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 156, in databases 
    self._databases = settings.DATABASES 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 56, in __getattr__ 
    self._setup(name) 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 39, in _setup 
    % (desc, ENVIRONMENT_VARIABLE)) 
django.core.exceptions.ImproperlyConfigured: Requested setting DATABASES, but settings are not configured. 

Also wirklich habe ich 2 Fragen. Erstens, ist dies der einfachste Weg, um das zu erreichen, was ich brauche, und zweitens, wenn es darum geht, wie ich diesen Fehler beheben kann. Ich habe die Dokumente und die Beiträge here und here angesehen. Die Dokumente sind django docs

Dies kann offensichtlich sein, aber ich bin neuer zu codieren, also sei sanft lol.

EDIT *** Hier ist meine db Definition in settings.py (Verzeichnis)

}, 
    'default': { 
     'NAME': 'app2', 
     'ENGINE': 'django.db.backends.mysql', 
     'USER': 'admin', 
     'PASSWORD': 'password', 
     'HOST': '10.1.1.1', 
     'PORT': '3306', 

    }, 
+0

Ich denke, du solltest zuerst das [Django-Tutorial] (https://docs.djangoproject.com/de/1.11/intro/tutorial01/) durchgehen, um zu sehen, wie man ein neues Django-Projekt einrichtet und ausführt. Im Moment versuchen Sie nur, eine einzelne Python-Datei auszuführen, kein Django-Projekt (zusammen mit seiner Konfiguration) auszuführen. –

+0

Ich bin gerade dabei, mein Projekt in die Produktion zu verlagern. Ich habe Django-Report-Builder installiert und es funktioniert nahezu perfekt. Es gibt nur einige Probleme beim Zugriff auf bestimmte Modelle. Dies ist ein Versuch, um zu arbeiten, und das letzte, was ich getan habe, bevor ich voll leben – Joe

Antwort

0

EDITED einen besseren Code-Schnipsel/example aufzunehmen.

Wenn du gehst nicht ein Django-Projekt zu schaffen, sondern nur Django ORM in Ihrer Python-Datei verwenden Sie zusammen mit allen Modellen eine settings.py Datei erstellen müssen und Djangos Konfiguration wie folgt initialisieren:

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

kurz vor dem Import connection.

Überprüfen Sie here und die official docs. Es gibt einige nette Beispiele here auch.

+0

Ich habe ein Django-Projekt. Ich habe die Datei, die ich schreibe im selben Verzeichnis wie meine settings.py Datei, weshalb ich verwirrt bin. Ich habe diesen Befehl ausprobiert und es funktioniert nicht ganz. Gibt mir "bitte liefern Motor-Wert" Fehler – Joe

+0

Ich werde versuchen, dies zu addieren, aber ich habe all dies in den lokalen settings.py definiert, warum kann ich nicht darauf zugreifen htere – Joe

+0

Wenn Sie ein Django-Projekt haben, dann fehlt Ihre Einstellungen-Datei die Taste "ENGINE". Werfen Sie einen Blick auf [Django Einstellungen Referenz] (https://docs.djangoproject.com/en/1.11/ref/settings/#engine) – yorodm

Verwandte Themen