Olá pessoal, estou aquin novamente para esclarecer algo que tem trazido muita
dificuldade para quem trabalha com o GAE (Google App Engine), estou falando
de filtros utilizando o “SQL LIKE”.
Na verdade o GAE não dá suporte ao uso de consultas com o “like”, entretanto
podemos minimizar a falta dele fazendo uma pesquisa com um “falso like” onde
o usuário poderá filtrar resultados que coicidam com o início do termo pesquisado.

Exemplo utilizando GqlQuery like in gae.

query = self.request.str_POST['query']
queryEnd = query+"\xEF\xBF\xBD".decode('utf-8')
res = db.GqlQuery('SELECT * FROM User WHERE name>=:1 AND name<=:2 ORDER BY nom DESC', query, queryEnd)

Agora outro exemplo utilizando o a sintaxe de consultas do web2py

# observe a utilização do decode('utf-8') na linha abaixo para permitir filtro com caracteres acentuados
queryStart = request.vars.search.decode('utf-8')
queryEnd = queryStart+"\xEF\xBF\xBD".decode('utf-8')
query =((db.auth_user.email>=queryStart)&(db.auth_user.email<=queryEnd))
res = db(query).select()

Como isto deve ser utilizado em várias partes do código, você pode criar uma
pequena função que retorna o sql montado.

def like_query(term, field):
    """
    Recebe o termo pesquisado 'term (string)' e o campo a pesquisar 'field (object)'
    e retorna o SQL que será utilizado com o objeto db()
    """
    queryStart = term.decode('utf-8')
    queryEnd = queryStart+"\xEF\xBF\xBD".decode('utf-8')
    query =((field>=queryStart) & (field<=queryEnd))
    return query
 
query = like_query(request.vars.filter, db.auth_user.full_name)

O mais importante disto tudo, “Você pode pesquisar no gae sem precisar digitar todo o texto da pesquisa”

Galera, confesso que não foi fácil encontrar material para este post, e sei que
muita gente vai precisar disto, então peço que postem algo que seja uma solução
melhor ou até mesmo alternativa para utilização o like no gae.