Ich versuche einige DB-Frontends mit Django zu erstellen, da ich die allgemeine MVC-Struktur sowie das Template-System und die Admin-Schnittstelle mag. Ich habe jedoch Probleme mit bestimmten Aspekten der Verwendung eines PostgreSQL-Backends.PostgreSQL-Schema in Django angeben
Ich habe, um herauszufinden, verwaltet, wie die verschiedenen Schemata zu spezifizieren (und Datenbanken) unter Verwendung der Datenbank Abschnitt der settings.py
Datei wie folgt:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'MPS': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'OPTIONS': {
'options': '-c search_path=django'
},
'NAME': 'sandbox_manzer',
'HOST': '192.168.2.151',
'PORT': '5434',
'USER': '******',
'PASSWORD': '**********************',
}
}
Allerdings, wenn ich einige grundlegende Tests versuchen, Skript, wie detailliert here, laufe ich auf ein Problem. Mein Benutzer kann Datenbanken sehr gut erstellen, also wird mein test_db gebaut, aber wenn die django App geht, um die Modelle in Tabellen zu bauen, erhalte ich einen Fehler, der besagt, dass No schema is specified
für das test_db. Jede Hilfe, wie ich Schemanamen für die test_db spezifiziere, würde am meisten geschätzt werden. Vor allem, da ich mehrere Apps für ein einzelnes Projekt mit verschiedenen Schemas als logische Trennzeichen erstellen möchte.
Danke!
Danke Dario. Ich bin mir jedoch nicht sicher, wie dies in der test_db (wo dieses Problem auftritt) beeinflusst werden. Wie ich denke, weißt du, dass die test_db neu erstellt und dann beim Ausführen von Django-Tests zerstört wird. Ich kann keine Dokumentation darüber finden, wie eine vorhandene Datenbank für Testzwecke angegeben werden kann. Vielleicht könnte es nützlich sein, den hier gezeigten 'MIRROR' zu verwenden (https://docs.djangoproject.com/de/1.10/topics/testing/advanced/#controlling-creation-order-for-test-databases). Irgendwelche Gedanken? – RyanM
Mein erster Versuch wäre, 'search_path = django, public' anzugeben, so dass Tabellen in' public' erstellt werden sollten (was immer da ist), wenn 'django' nicht existiert; Alternativ können Sie den gesamten Abschnitt "OPTIONS" auskommentieren, aber Sie würden den Vorteil separater Schemas verlieren. – Dario
Ich versuche zu vermeiden, alles in das öffentliche Schema zu laden. Ich habe ein paar Artikel gelesen, die darauf hindeuten, dass das Blähen des öffentlichen Schemas die PostgreSQL-Serveroperationen beeinträchtigen und möglicherweise Leistungsprobleme verursachen kann. Außerdem wollte ich Schemas als logische Trennzeichen für meine verschiedenen Apps verwenden. Ich werde damit weiterspielen. – RyanM