Die Datenbankverbindung aus dem Anwendungskontext mit Flask-Restful erhalten

Ich habe eine App mit Flask-Restful und ich weiß nicht, wie man die Datenbankverbindung info aus dem Anwendungskontext bekommt.

Hier ist was ich bisher habe

App.py:

.... from flask.ext.restful import reqparse, abort, Api, Resource app = Flask(__name__) app.config['DATABASE'] = 'my.db' api = Api(app) api.add_resource(Foo, '/') 

Foo.py

 ... from flask.ext.restful import Resource class Foo(Resource): def __init__(self): self.db = get_db() def post(self): do_stuff_with_db() 

Ich möchte die get_db-Methode so aussehen wie:

 def get_db(): return database.connect(app.config['DATABASE']) 

Das Problem ist, um app.config in foo.py zu bekommen, ich kreiere eine kreisförmige Referenz. Gibt es eine saubere und hoffentlich idomatische Art, das zu bekommen?

Ich habe diese Frage gesehen , aber die gegebene Lösung löst nicht das zirkuläre Importproblem.

One Solution collect form web for “Die Datenbankverbindung aus dem Anwendungskontext mit Flask-Restful erhalten”

Nun, für mein Projekt verwende ich diese Art von Struktur:

Anwendung / __ init__.py

 ... app = Flask(__name__) ... db = SQLAlchemy(app) #because I use sqlalchemy ... import application.core 

Anwendung / core.py

 from application.api import resource ... # api definition 

Application / api / resource.py

 from application import db ... db.doWhatEverYouWant() ... 

Es ist sicher nicht perfekt, aber ich habe keine solchen kreisförmigen Importprobleme.

  • Wie kann ich eine Spalte im Bearbeitungsformular mit Flask-Admin ModelView filtern?
  • Flaschenansicht hebt TypeError: 'bool' Objekt ist nicht abrufbar
  • Fehler beim Ausweitung von RegisterForm in Flaschensicherheit
  • Flasche sieht keine Änderung in .js-Datei
  • Flask Admin ModelAlle Felder zwischen CREATE und EDIT anzeigen
  • Anpassen (Override) Flask-Admin's Submit-Methode aus der Bearbeitungssicht
  • Redirect auf Anmeldeseite, anstatt eine verbotene Nachricht anzuzeigen, wenn sie nicht angemeldet ist
  • Flask-admin Inline-Modellierung übergeben Form Argumente wirft AttributeError
  • Wie kann man Flaschenerweiterungen manuell installieren?
  • @login_required Schwierigkeiten in der Flasche app
  • Flasche und flask_login - vermeiden Sie das Importieren von flask_login aus dem Hauptcode
  • Python ist die beste Programmiersprache der Welt.