-
Notifications
You must be signed in to change notification settings - Fork 0
/
consulta.py
190 lines (134 loc) · 6.44 KB
/
consulta.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
import cx_Oracle
from printfunctions import *
def RealizaConsulta(cursor):
#Verifica se qual é a consulta desejada
tipo_consulta = input("\n\nDigite: \n1 para uma consulta geral \n2 para consulta especifica \noutro numero para retornar ao menu\nEntrada:")
#Consultas Validas
if tipo_consulta == '1' or tipo_consulta == '2':
if tipo_consulta =='1':
ConsultaGeral(cursor)
if tipo_consulta=='2':
ConsultaEspecifica(cursor)
def ConsultaGeral(cursor):
#Tabelas disponiveis para consulta
Possibilidades=["Pesquisador","Informante","Zelador",
"Matador_pombos","Central_Pombos","Coco_Pombo"]
print("\n\nDigite o digito da tabela correspondente desejada, caso queria desistir digite qualquer numero nao presente")
#Printa possibilidades no terminal
for i in range(len(Possibilidades)):
print((i+1),"- ",Possibilidades[i])
escolha = input("\nDigite o numero de entrada: ") #Entrada do usuario
try:
escolha = int(escolha) #Digitou um numero
except:
print("\n A escolha deve ser um numero")
return
#Numero dentro das possibilidades
if escolha >= 1 and escolha <= len(Possibilidades):
string_busca=""
#Gerar a string (comando sql) baseado na entrada
if escolha == 1 : string_busca= busca_Pesquisador()
if escolha == 2 : string_busca= busca_Informante()
if escolha == 3 : string_busca= busca_Zelador()
if escolha == 4 : string_busca= busca_Matador()
if escolha == 5 : string_busca= busca_Central()
if escolha == 6 : string_busca= busca_Cocos()
try:
cursor.execute(string_busca) #Retorna tuplas
except cx_Oracle.DatabaseError as error:
print("Erro ao consultar tabela: ", error)
return
#Faz o print no terminal das tuplas de forma mais elegante
if escolha == 1 : string_busca= print_pesquisador(cursor)
if escolha == 2 : string_busca= print_informante(cursor)
if escolha == 3 : string_busca= print_zelador(cursor)
if escolha == 4 : string_busca= print_matador(cursor)
if escolha == 5 : string_busca= print_central(cursor)
if escolha == 6 : string_busca= print_coco(cursor)
def ConsultaEspecifica(cursor):
#Opcoes de possibilidades
Possibilidades=["Regioes com Densidade acima de X",
"Historico de Zelador X",
"Historico de Pesquisador X",
"Historico completo de Pesquisador X",
"Historico de Matador de Pombo X",]
print("\n\nDigite o digito da consulta correspondente desejada, caso queria desistir digite qualquer numero nao presente")
#Printa possibilidades no temrinal
for i in range(len(Possibilidades)):
print((i+1),"- ",Possibilidades[i])
escolha = input("\nDigite o numero de entrada: ")
try:
escolha = int(escolha) #Caso tenha digitado um numero
except:
return
#Caso tenha sido um numero dentro das possibilidades
if escolha >= 1 and escolha <= len(Possibilidades):
if escolha == 1:
Densidade_minima = input("\nDigite a densidade de pombos minima (Recomendado ser < 10): ")
try:
Densidade_minima = float(Densidade_minima) #Numero pode ser quebrado
except:
print("\n A escolha deve ser um numero")
return
string_busca = "SELECT * FROM TABLE(Densidade_Regiao("+str(Densidade_minima)+"))"
try:
cursor.execute(string_busca)
except cx_Oracle.DatabaseError as error:
print("Erro ao consultar Funcao: ", error)
return
print("\n")
for result in cursor: #Printa resultado no terminal
print("Regiao:",result[0],", Densidade de Pombos:",result[1])
#Caso tenha escolhido historico de algum profissional
else:
CPF = input("\nDigite o CPF do trabalhador (apenas os 11 numeros): ")
string_busca = "SELECT * FROM TABLE"
#Altera string baseado na entrada
if escolha == 2 : string_busca += "(Historico_Zelador("+str(CPF)+"))"
if escolha == 3 : string_busca += "(Historico_Pesquisador("+str(CPF)+"))"
if escolha == 4 : string_busca += "(Historico_Pesquisador_Full("+str(CPF)+"))"
if escolha == 5 : string_busca += "(Historico_Matador("+str(CPF)+"))"
try:
#Busca dados no banco
cursor.execute(string_busca)
except cx_Oracle.DatabaseError as error:
print("Erro ao consultar Funcao: ", error)
return
CPF_encontrado = False #Declara variavel
#Printa de forma elegante o retorno do banco
if escolha == 2 : CPF_encontrado = print_historico_zelador(cursor)
if escolha == 3 : CPF_encontrado = print_historico_pesquisador(cursor)
if escolha == 4 : CPF_encontrado = print_historico_pesquisador_full(cursor)
if escolha == 5 : CPF_encontrado = print_historico_matador(cursor)
#Caso n tenha dado encontrado
if not CPF_encontrado:
print("\nCPF nao foi encontrado no banco de dados")
#String para dados da tabela Pesquisador
def busca_Pesquisador():
busca = """SELECT CPF,NOME,TO_CHAR(DATANASC, 'DD/MM/YYYY'),
CEP,RUA,NUMERO,FORMACAO FROM PESQUISADOR"""
return busca
#String para dados da tabela Zelador
def busca_Zelador():
busca = """SELECT CPF,NOME,TO_CHAR(DATANASC, 'DD/MM/YYYY'),
CEP,RUA,NUMERO,CARTEIRATRAB FROM ZELADOR"""
return busca
#String para dados da tabela Informante
def busca_Informante():
busca = """SELECT CPF,NOME,TO_CHAR(DATANASC, 'DD/MM/YYYY'),
CEP,RUA,NUMERO FROM INFORMANTE"""
return busca
#String para dados da tabela Matador_Pombos
def busca_Matador():
busca = """SELECT CPF,CENTRAL,NOME,TO_CHAR(DATANASC, 'DD/MM/YYYY'),
CEP,RUA,NUMERO,NROLICENCA,MODELOARMA FROM MATADOR_POMBOS"""
return busca
#String para dados da tabela de Centrais
def busca_Central():
busca = """SELECT * FROM CENTRAL_POMBOS"""
return busca
#String para dados da tabela de Cocos
def busca_Cocos():
busca = """SELECT ID,LATITUDE,LONGITUDE, TO_CHAR(DATAHORA, 'DD/MM/YYYY HH24:MI:SS'),
TO_CHAR(DATAHORARETIRADO, 'DD/MM/YYYY HH24:MI:SS'),CEP,BAIRRO,RUA,NUMERO FROM COCO_POMBO"""
return busca