Você pode criar um
dict
com os dados do filtro:filter_data = {'horsepower': horsepower, 'voltage': voltage, 'rpm': rpm}
Em seguida, crie outro
dict
apenas com as chaves cujos valores existem:filter_data = {key: value for (key, value) in filter_data.items()
if value}
E, finalmente, use este dict como kwargs para sua consulta:
results = Motor.query.filter_by(**filter_data).all()