БД по нескольким условиям. В where есть and_ с четырьмя условиями. Появилась необходимость убирать некоторые условия если по итогу возвращается None (т.е. нужно смягчить условия поиска, если ничего не возвращается)
На уровне питона конечно можно после запроса проверить возвращаемое значение и для None просто делать другой запрос. Но мы ведь не знаем, из-за какого условия в базе не нашлось ни одной записи, поэтому нужно делать несколько комбинаций запросов и все их поочередно выполнять. И это явный бред. Какие есть варианты для решения этой проблемы?
А что значит "не знаем, из-за какого условия в базе не нашлось ни одной записи"? Как это вообще собираешься понять?
Вот в этом и вопрос, я не знаю как это понять. Если у меня не выполнилось третье условие, то нужно его убрать и повторить запрос. А как такое сделать — не знаю (даже не знаю, как гугл спросить)
Условий же влияющих на это может быть много. Они у тебя либо в порядке приоритета должны отключаться, либо в искать запрос с наибольшим/наименьшим количеством строк
Сделай перед запросом на чтение строк отдельные проверки на наличие строк соответствующих критериям отдельных частей этого запроса
Спасибо, я об этом и думал. Теперь мне надо понять, как в зависимости от полученных критериев подставлять в and_ нужные условия. А иначе мне придется копипастить один и тот же запрос, удаляя по одному условию из запроса. И так у меня их может быть много
kindaway, Вы увеличили карму Айван до 441.22 (+9.61)
query builder же
https://github.com/SamWarden/user_service/blob/63cd8d4022236b7e17e6ed48d0c8c29431263b3a/src/infrastructure/db/repositories/user.py#L47
А поконкретней код можно? А то не понимаю что за ситуация
А зачем в лист конвертишь?
боже мой, я и не догадывался что так можно :D спасибо ещё раз
я бы кинул код, но у меня на компьютере нет интернета, а фотографию экрана делать не хочу 😁
Хотя... может быть ситуация когда фильтры по-отдельности возвращают результат, но вместе ничего не вернут
И без чёткой формулировки алгоритма их отключения решение неочевидно. Возможно проще все подходящие записи прочитать и в коде отфильтровать
Возможно для тайпхинта
Обсуждают сегодня