Olá Claudio, tudo bem com você?
Peço desculpas pela demora em lhe responder.
Para realizar consultas rápidas em um banco de dados podemos utilizar o Django Shell. O Django Shell, servirá para interagirmos rapidamente com o banco de dados ou outros modelos do nosso projeto ou aplicativos. Essa interação será feita utilizando instruções python em sua linha de comando. Deixo abaixo um passo a passo de como realizar essa consulta.
Abra o terminal na pasta do seu projeto.
Dentro do seu projeto, certifique que o banco que deseja acessar está configurado no arquivo settings.py. Exemplo:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'NOME DO BANCO',
'USER': 'SEU USUARIO',
'PASSWORD': 'SUA SENHA',
'HOST': 'localhost'
}
}
Execute o comando abaixo para iniciar o Django Shell.
python manage.py shell
Será aberto o Shell. Cole as linhas de comando abaixo para realizar a consulta.
from django.db import connection
def consulta_banco():
with connection.cursor() as cursor:
cursor.execute("SELECT B1_COD,B1_DESC,B1_UND FROM SB1010 WHERE B1_TIPO='PA'")
colunas = [col[0] for col in cursor.description]
return [
dict(zip(colunas, linhas))
for linhas in cursor.fetchall()
]
consulta_banco()
Nesse momento será apresentado todos os dados que possuem o campo B1_TIPO
igual à PA
.
Caso queira o resultado de uma forma estruturada e com um visual mais dinâmico, podemos criar um template e uma rota para acessar essas informações. Para isso, basta seguir os passos abaixo.
No arquivo views.py do app do projeto, declare a seguinte função e salve o arquivo.
from django.db import connection
from django.shortcuts import render
def consulta_banco(request):
with connection.cursor() as cursor:
cursor.execute("SELECT B1_COD,B1_DESC,B1_UND FROM SB1010 WHERE B1_TIPO='PA'")
colunas = [col[0] for col in cursor.description]
resposta = [
dict(zip(colunas, linhas))
for linhas in cursor.fetchall()
]
dados = {
'dados': resposta
}
return render(request, 'consulta.html', dados)
Crie um template com o nome consulta.html e adicione as linhas abaixo.
<style>
table, th, td {
border:1px solid black;
text-align: center;
}
</style>
<table>
<tr>
<th>B1_COD</th>
<th>B1_DESC</th>
<th>B1_UND</th>
</tr>
{% for item in dados %}
<tr>
<td>{{ item.b1_cod }}</td>
<td>{{ item.b1_desc }}</td>
<td>{{ item.b1_und }}</td>
</tr>
{% endfor %}
</table>
Neste momento, declare uma rota no arquivo url.py para acessar o resultado da consulta.
urlpatterns = [
path('admin/', admin.site.urls),
path('consulta/', consulta_banco )
]
Acessando a url consulta/ será apresentado todos os dados que possuem o campo B1_TIPO
igual à PA
.
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!