sqlalchemy.ex c .InterfaceError: / Запрос к БД приводит к ошибке при назначении отдельной переменной в список - PullRequest
0 голосов
/ 15 марта 2020

Для моего веб-приложения у меня есть некоторые переменные, внедряемые в базовые / все шаблоны со следующим кодом:

@app.context_processor
def inject_into_base():
    # If user is not logged in
    if not current_user.is_authenticated:
        # Set count to none
        count = None
        role = None

    # Else Count is set to the number of unread messages
    else: 
        count = db.session.query(message).filter(message.user_id_to == current_user.user_id).filter(message.status == False).count()
        role = db.session.query(user_society_role.role_id).filter_by(user_id=current_user.user_id).order_by(user_society_role.role_id.desc()).first().role_id

    return dict(count=count, role=role)

Все хорошо, пока я не достигну определенного маршрута, который содержит строку:

Survey.q9 = Survey.q9.split(',')

, который просто разбивает строку в список. Это приводит к

sqlalchemy.exc.InterfaceError: <unprintable InterfaceError object>

Если я жестко закодирую два файла db.session.query, найденных в inject_into_base, он будет работать нормально, и если я закомментирую .split (',') в маршруте, это также работает нормально.

Я также обнаружил, что назначение чего-либо для Survey.q9 ломает мое приложение, и ТОЛЬКО на этом одном определенном маршруте.

Любая помощь очень ценится, я впервые спрашиваю вопрос здесь, так что, пожалуйста, go легко на меня:)

1 Ответ

0 голосов
/ 17 марта 2020

Исправил мою проблему, оказалось, что функция sqlalchemy autoflush ломала мое приложение, все, что мне нужно было сделать, чтобы это исправить, это добавить db = SQLAlchemy(app, session_options={"autoflush": False}) к моему __init__.py

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