Consulta com ALIAS usando DAL
A DAL é um recurso muito útil para manipulação de banco de dados pois se aproxima ao máximo da sintaxe SQL que conhecemos.
Para obtermos nosso campo fazemos uma iteração
Veja como é fácil usar o DAL para fazer consultas SQL. Lembrando que o DAL nada mais é do que uma adaptação do pyDAL para o Web2py, esse módulo vem separado no novo framework py4web.
Para saber mais sobre DAL e pyDAL consulte a documentação nos links abaixo aqui.
http://web2py.com/books/default/chapter/31/06/a-camada-de-abstracao-do-banco-de-dados
https://pypi.org/project/pydal/
Não deixe de ler nosso artigo sobre select recursivo e de praticar.
https://web2pymania.blogspot.com/2020/04/select-recursivo-web2py.html
Em determinados casos precisamos retornar em uma consulta valores pré processados como no exemplo abaixo.
select tabela.valor*tabela.quantidade from tabela where tabela.campo = 'isto';
A DAL permite que façamos isso no seu construtor select(), no momento em que devemos passar os campos que desejamos retornar na consulta.
Exemplo
db.define_table(
'itens'
, Field('price')
, Field('quantity')
)
resultado = db().select(db.itens.ALL)
'itens'
, Field('price')
, Field('quantity')
)
resultado = db().select(db.itens.ALL)
Veja que omitimos os parâmetros de db(), pois ali é o onde vai nosso WHERE, o db.person.ALL é o mesmo que o '*' do SQL.
Se precisarmos retornar por exemplo o valor de quantidade multiplicado pelo preço, fazendo um subtotal, precisaríamos do seguinte
subtotal = db.itens.price*db.itens.quantity
fields = db.itens.ALL # ALL é uma lista com o nome dos campos
fields.append(subtotal) # acrescentamos a nossa lista o campo subtotal
resultado = db().select(fields=fields)
fields = db.itens.ALL # ALL é uma lista com o nome dos campos
fields.append(subtotal) # acrescentamos a nossa lista o campo subtotal
resultado = db().select(fields=fields)
Para obtermos nosso campo fazemos uma iteração
for i in resultado:
print(i[subtotal])
print(i[subtotal])
Para facilitarmos nossa vida podemos ainda criar um alias para o subtotal, assim:
subtotal = db.itens.price*db.itens.quantity
fields = db.itens.ALL # ALL é uma lista com o nome dos campos
fields.append(subtotal.with_alias('subtotal'))
fields = db.itens.ALL # ALL é uma lista com o nome dos campos
fields.append(subtotal.with_alias('subtotal'))
E resgatarmos com um:
for i in resultado:
i.subtotal
i.subtotal
Veja como é fácil usar o DAL para fazer consultas SQL. Lembrando que o DAL nada mais é do que uma adaptação do pyDAL para o Web2py, esse módulo vem separado no novo framework py4web.
Para saber mais sobre DAL e pyDAL consulte a documentação nos links abaixo aqui.
http://web2py.com/books/default/chapter/31/06/a-camada-de-abstracao-do-banco-de-dados
https://pypi.org/project/pydal/
Não deixe de ler nosso artigo sobre select recursivo e de praticar.
https://web2pymania.blogspot.com/2020/04/select-recursivo-web2py.html
Comentários
Postar um comentário