Как сформулировать SQLite запрос с kwargs
Помогите разобраться в том, как с помощью SQLite3 сделать запрос, когда я не знаю какое количество аргументов получит функция?
Допустим есть функция, которая осуществляет поиск в базе данных получая разное кол-во ключевых аргументов: def find(**kwargs)
.
Запрос у меня выглядит следующим образом и в данный момент ищет по сути только по 1 аргументу:
'SELECT * FROM Books WHERE author = ? OR title = ? OR year = ?', (book_author, book_title, book_year)
Как мне его откорректировать, чтобы поиск был по 1 или нескольким аргументам (с AND естественно). Если функция получит только 1 аргумент (author) или 2 или все 3? Не совсем могу понять...
Ответы (1 шт):
Автор решения: Oopss
→ Ссылка
def find(**kwargs):
query = "SELECT * FROM Books WHERE "
# обработка параметров
query += f"{key} = ? "
params.append(value)
query += "OR " или "AND"
# по параметрам дополнить запрос
cursor.execute(query, tuple(params))