Substituição de parâmetro dinâmico em Python

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)