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