Ao substituir uma variável por um nome de parâmetro, as coisas não são tão óbvias quanto você poderia esperar. O exemplo SQLAlchemy abaixo ilustra isso.
O que estamos tentando alcançar neste caso é:
params(name='bob')
A maneira como abordamos isso lança um ValueError , pois interpreta (corretamente) o nome do parâmetro como uma string em vez de um parâmetro e valor:
field = 'name'
value = 'bob'
params = "%s='%s'"%(field, value)
query = query.params(params)
A solução é passar o par chave / valor para a chamada de função como ** kwargs:
params = {
'name': 'bob'
}
query = query.params(**params)