[django] produktiv MySQL, tests aber mit SQLite

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wie kann man es erreichen, das der normale Betrieb MySQL (oder was anderem) nutzt, die Tests aber mit SQLite und :memory: laufen???

So wie ich das sehe, ist die Test Datebank engine auch immer die der produktiv Einstellungen. Man kann lediglich den Datenbank Namen ändern.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
orschiro
User
Beiträge: 60
Registriert: Donnerstag 11. Dezember 2008, 16:10
Kontaktdaten:

Schau dir mal den Trac von djangoproject.com an. Die lösen das mit einem ziemlich cleveren Trick.

http://code.djangoproject.com/browser/d ... ettings.py
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Naja, so clever finde ich das mit platform.node() nicht.
Einfacher wäre es, wenn man irgendwie testen könnte:
1. laufen gerade die tests
2. wird gerade der dev.server genutzt
3. läuft es produktiv

Wobei 3. sich ergibt, wenn 1 und 2 nicht zutreffen.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Besser wäre es wenn man Instanzen für Entwicklung, Tests und Produktivsysteme verwendet oder zumindest seperate Konfigurationen wie bei Rails.
SpiritCrusher
User
Beiträge: 13
Registriert: Montag 11. Januar 2010, 13:59
Wohnort: Köln
Kontaktdaten:

Also ich persönlich halte es so, dass meine Django Projekte jeweils eine separate local_settings.py haben, die ich am Ende der normalen settings.py importiere... Damit lässt sich dein Problem vollkommen unproblematisch lösen ;)
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

Ich gehe davon aus, dass du VCS verwendendest. Was spricht dagegen einen lokalen Clone anzulegen, der seine eigene settings.py hat? Dann kannst du deine Dateien auch ohne Probleme syncen.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich benutzte auch eine local_settings.py und natürlich kann ich da auch von MySQL auf SQLite wechseln.

Aber auch die Entwicklung geschieht z.Z. auch mit MySQL. Alleine die Tests sollen per SQLite :memory: laufen, weil es schneller ist.

Aber so wie es aussieht ist es einfach auch für die Entwicklung SQlite zu verwenden...

Dabei könnte man es doch so einfach machen. Statt nur den Datenbank Namen für die Tests änderbar zu machen, hätte man auch die Engine änderbar machen können...

Generell wäre es aber nett, wenn man unterscheiden könnte, ob man im dev. modul, test modus oder produktiv läuft... z.Z. packe ich in die local_settings.py ein SERVE_STATIC_FILES = True rein. Wüßte man aber ob mal im dev/test-Modus läuft, könnte man das dynamisch entscheiden, ob statische Dateien ausgeliefert werden sollen oder nicht.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten