Wie macht man es richtig?
Verfasst: Sonntag 30. Januar 2011, 18:23
Ich weiß ehrlich gesagt nicht, ob die Frage nicht vielleicht in Datenbanken oder Webframeworks, aber ich vermute, es ist ein Problem mit Python Grundlagen. Folgendes Problem: ich habe eine Flask Anwendung, in der ich eine Datenbank anspreche. Die Verzeichnisstruktur sieht in etwa so aus
Ich habe also kein Modul sondern ein Paket für die Model. In der model/__init__.py importiere ich die ganzen Model, ich erstelle die Datenbankverbindung mit metadata.bind und rufe setup_all() auf (Elixir). Das ganze sieht in etwa so aus.
Soweit funktioniert das ganze, ich weiß nur nicht, ob das guter Stil ist. Gibt es einen pythonischeren Weg?
Und meine zweite Frage: ich habe den String für die Datenbank momentan direkt in der __init__.py in /myall/app/model/ geschrieben. Jetzt würde ich aber gerne den Verbindungsstring in die config.py auslagern und app.config von Flask nutzen.
Die Envvar habe ich im System gesetzt und das Laden funktioniert soweit. Ich erstelle das app Objekt aber in /myapp/app/__init__.py. Wie bekomme ich das Objekt jetzt in das Model? Die Datenbankverbindung wird ja automatisch ausgeführt, sobald ich ein Model importiere.
Code: Alles auswählen
/myapp/
/myapp/runserver.py
/myapp/config.py
/myapp/app/
/myapp/app/__init__.py
/myapp/app/views/
/myapp/app/templates/
/myapp/app/static/
/myapp/app/model/
/myapp/app/model/__init__.py
/myapp/app/model/model1.py
/myapp/app/model/model2.py
Code: Alles auswählen
from elixir import metadata, setup_all, session
from model1 import Model1
from model2 import Model2
metadata.bind = "postgresql://user:pw@localhost/database"
session.configure(bind=metadata.bind)
metadata.bind.echo = True
setup_all()Und meine zweite Frage: ich habe den String für die Datenbank momentan direkt in der __init__.py in /myall/app/model/ geschrieben. Jetzt würde ich aber gerne den Verbindungsstring in die config.py auslagern und app.config von Flask nutzen.
Code: Alles auswählen
app = Flask(__name__)
app.config.from_envvar('SETTINGS')