Re: [web2py-users-brazil:7883] busca de dados usando uma lista

11 views
Skip to first unread message

Ari Sobel

unread,
May 25, 2015, 6:15:55 PM5/25/15
to web2py googlegroups
use belongs

query = db(Tabela.id.belongs(lista)).select()

Em 25 de maio de 2015 16:06, Matheus Suffi <matheus...@gmail.com> escreveu:
Boa Tarde,

eu faço uma busca na base de dados e como parâmetro eu preciso passar uma lista , ex:
       lista= ['id',1]
       query = db(Tabela.id == lista['id']).select()

o que quero fazer é basicamente uma busca usando essa logica acima, varios ids em 1 busca apenas , é claro que no exemplo que passei vai dar erro.
gostaria de saber se existe uma maneira pratica de fazer essa busca sem ter que usar varias estruturas de repetição para varrer as listas 

--
Você recebeu essa mensagem por estar inscrito no grupo web2py-users-brazil.
Para enviar uma mensagem ao grupo, envie email a: web2py-us...@googlegroups.com
Para se desinscrever, envie email a: web2py-users-br...@googlegroups.com
Para mais opções, visite o site do grupo em: http://groups.google.com/group/web2py-users-brazil?hl=en
---
Você recebeu essa mensagem porque está inscrito no grupo "web2py-users-brazil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para web2py-users-br...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Vinicius Assef

unread,
May 25, 2015, 10:25:21 PM5/25/15
to web2py-us...@googlegroups.com
Uma dica, que não tem absolutamente nada a ver com a pergunta original, mas vou citar porque tenho visto muita gente fazendo isso no Web2py. Não sei se é o caso do Matheus. Talvez o exemplo dele tenha ficado simplificado apenas por questão de objetividade para a pergunta.

Antes de começar, quero dizer que não estou dizendo que o Matheus está fazendo algo errado. Não mesmo. Só peguei o código dele como exemplo porque vi nele.

O trecho de exemplo da pergunta usa um objeto chamado `Tabela`, que é uma instância da classe `Table`, retornada pela chamada do método `db.define_table()`. A forma mais comum de se obter um objeto da classe `Table`, é capturando o retorno do `db.define_table()`, quando a tabela é criada, no `db.py`. Exemplo:

```
Params = db.define_table(“parametros_sistema”, Field(“codigo”), Field(“valor”))
```

A partir de agora, ao invés de usar `db.parametros_sistema`, você pode usar apenas `Params`, quando for referenciar a tabela `parametros_sistema`. Isso é prático, porque você dar um nome mais simples ou mais significativo a uma tabela. 

Mas não façam isso, porque, conforme o manual do Web2py, uma das coisas que mais melhoram o desempenho de uma aplicação Web2py é definir as tabelas com o parâmetro `lazy_tables=True` [1].

Mas, o manual também diz que: "This feature means that table creation is deferred until the table is actually referenced. “. Ou seja, a tabela não é criada no momento da chamada do `db.define_table()`.

Então, seu objeto que você pegou como retorno do `db.define_table()`, será um `None` e você vai se deparar com tickets de erro, se estiver usando `lazy_tables=True`.

Portanto, use a forma `db.nome_da_tabela` mesmo e não capture o retorno do `db.define_table()` para evitar dor de cabeça futura.

Fica a dica.

Vinicius

Reply all
Reply to author
Forward
0 new messages