Динамическое SQL-предложение WHERE
Для записи, ям с использованием Python и SQLlite. У меня есть рабочая функция, которая генерирует SQL, который мне нужен, но он не выглядит правильным.
def daily(self, host=None, day=None):
sql = "SELECT * FROM daily WHERE 1"
if host:
sql += " AND host = '%s'" % (host,)
if day:
sql += " AND day = '%s'" % (day,)
return sql
Возможно, мне понадобится добавить несколько столбцов и критериев позже.
Есть идеи получше?
Редактировать: Что не выглядит правильно, так это то, что я строю SQL динамически из строк. Как правило, это не лучший подход. SQL-инъекция атакует, нужно правильно экранировать строки. Я не могу использовать заполнители, потому что некоторые значения имеют значение None и не должны находиться в условии предложения WHERE.