вы можете попробовать что-то подобное, это может работать:
app / __ init __. Py
from eve import Eve
from flask import current_app, request
# database
from .database import db
# blueprints
from users import blueprint1
from todo import blueprint2
create_app()
def set_username_as_none(username):
resource = request.endpoint.split('|')[0]
return current_app.data.driver.db[resource].update(
{"user" : username},
{"$set": {"user": None}},
multi=True
)
app = Eve()
# SQL Possible Solution 1
# register sqlalchemy to this app
with app.app_context():
db.init_app(app)
Migrate(app, db)
if not database_exists(db.engine.url):
create_database(db.engine.url)
print('Database créée : ' + str(database_exists(db.engine.url)))
# SQL Possible Solution 2
db.init_app(current_app)
Migrate(current_app, db)
if not database_exists(db.engine.url):
create_database(db.engine.url)
print('Database créée : ' + str(database_exists(db.engine.url)))
# register the blueprint to the main Eve application
app.register_blueprint(blueprint1)
app.register_blueprint(blueprint2)
# bind the callback function so it is invoked at each user deletion
app.users_deleted += set_username_as_none
return app
run.py
instance = create_app()
instance.run()
app / Models /... В каждой модели
from ..database import db
class Plop(db.model):
app / database.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy() # you can override model there ex : model=MyModel