Оформление мультитенантной заявки на колбу - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь создать мультитенантное приложение, используя Flask, я следую этому руководству, я использую Postgres sql для базы данных:

https://medium.com/@smirnov.am/multitenancy-with-flask-6f5375a34f55

Итак, моя точка зренияпутаницы в том, что, когда я пытаюсь перенаправить на указанный URL-адрес, поскольку я продолжаю получать внутреннюю ошибку сервера, когда я просматриваю журналы, это то, что я получаю:

TypeError: index() got an unexpected keyword argument 'organization_name'

ХотяСледуя руководству, я делаю те же самые шаги, что и он, но я просто не могу получить окончательный результат, чтобы показать, что он работает.

Вот как я структурирую свой app.route

@app.route("/<organization_name>/users")
def index(organization__name):
    organization_session = get_organization_session(organization__name)
    if not organization_session:
        print(404)
    users = organization_session.query(Organization).all()
    return jsonify({organization__name: [i.username for i in users]})

И вот как я настраиваю мультитенантную настройку:


DB_URI = my postgres uri 

# Manages the the multiple dbs for the organization

@simple_cache
def get_known_organizations():
    organizations = Organization.query.all()
    return [o.name for o in organizations]


def prepare_bind(organization):
    if organization not in current_app.config['SQLALCHEMY_BINDS']:
        current_app.config['SQLALCHEMY_BINDS'][organization] = DB_URI.format(organization)
    return current_app.config['SQLALCHEMY_BINDS'][organization]


def get_organization_session(organization):
    if organization not in get_known_organizations():
        return None
    prepare_bind(organization)
    engine = db.get_engine(current_app, bind=organization)
    session_maker = db.sessionmaker()
    session_maker.configure(bind=engine)
    sesh = session_maker()
    return sesh

Любая помощь будет принята с благодарностью

1 Ответ

3 голосов
/ 25 апреля 2019

В вашем маршруте organization_name имеет 1 подчеркивание, а в вашем определении функции есть 2 organization__name. Оба должны совпадать, чтобы ваш маршрут проходил правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...