У меня есть следующий Python код:
params = {}
query = 'SELECT * FROM LOGS '
if(date_from and date_to):
query += ' WHERE LOG_DATE BETWEEN TO_DATE(:date_start, "MM-DD-YYYY") AND LOG_DATE <= TO_DATE(:date_end, "MM-DD-YYYY")'
params['date_start'] = date_from
params['date_end'] = date_to
if(structure):
query += ' AND STRUCTURE=:structure_val'
params['structure_val'] = structure
if(status):
query += ' AND STATUS =:status'
params['status'] = status
cursor.execute(query, params)
Здесь я условно добавляю к запросу предложение WHERE
. Но есть проблема, когда у меня нет значения для дат, так как он не будет принимать WHERE
и добавит AND
без WHERE
. Если я добавлю предложение where к запросу, если фильтра нет, то он выдаст неправильный запрос. Есть ли лучший способ сделать это? Некоторое время я использовал Laravel
, и в построителе запросов есть метод when
, который поможет добавить условные предложения where. Что-нибудь подобное в Python для cx_Oracle
?