Итак, я запускаю веб-приложение Flask
в качестве интерфейса для небольшой базы данных SQLite
инвентаризации. Я использую Flask-SQLAlchemy
для всего взаимодействия с базой данных. У меня есть встроенная функция поиска, чтобы вы могли (например) найти все компоненты оборудования, назначенные для Person X. Или найти все компоненты оборудования из Project ABC, которые имеют статус Доступно. Функция поиска поддерживает необязательные критерии.
Из соображений безопасности я не могу разместить здесь исполняемый код, но это моя функция поиска:
for system in db.session.query(System).filter(and_(System.assignee_id.like("%{}%".format(assignee_id)),
System.serial.like("%{}%".format(serial)),
System.user_id.like("%{}%".format(user_id)),
System.project_id.like("%{}%".format(project_id)),
System.status_id.like("%{}%".format(status_id)))):
results.append(system)
Странно то, что это прекрасно работает, когда я запускаю приложение в конфигурации разработки. Но в моей производственной конфигурации, если я пытаюсь использовать критерии «Назначенный» или «Пользователь» (оба из которых являются строками адреса электронной почты), я получаю плохие результаты. Он показывает мне несколько систем, некоторые из которых имеют правильного правопреемника, но большинство из них не имеют. Единственными различиями между конфигурациями Production и Development являются путь к базе данных SQLite
и механизм аутентификации для входа в приложение.
Почему это может привести к разным результатам между двумя? Это работает ТОЧНО, как это должно быть в конфиге Dev.
UPDATE
После некоторой дополнительной отладки, как предлагается в комментариях, похоже, проблема в реальных данных ProductionConfig. Однако, когда я просматриваю файл .sqlite в DB Browser, изначально все выглядит правильно. Где он получает этих случайных сотрудников?