|
|
@ -14,7 +14,7 @@ SELECT_EXCLUIDOS = "SELECT %s FROM %s WHERE ind_excluido = 1 ORDER BY %s" |
|
|
|
|
|
|
|
REGISTROS_INCONSISTENTES = "DELETE FROM %s WHERE %s in (%s) AND ind_excluido = 0 " |
|
|
|
|
|
|
|
EXCLUI_REGISTRO = "DELETE FROM %s WHERE ind_excluido=1" |
|
|
|
EXCLUI_REGISTRO = "DELETE FROM %s WHERE ind_excluido=1" |
|
|
|
|
|
|
|
NORMA_DEP = "DELETE FROM vinculo_norma_juridica WHERE cod_norma_referente in (%s) OR \ |
|
|
|
cod_norma_referida in (%s) AND ind_excluido = 0 " |
|
|
@ -22,7 +22,7 @@ NORMA_DEP = "DELETE FROM vinculo_norma_juridica WHERE cod_norma_referente in (%s |
|
|
|
mapa = {} # mapa com tabela principal -> tabelas dependentes |
|
|
|
|
|
|
|
mapa['materia_legislativa'] = ['acomp_materia', 'autoria', 'despacho_inicial', |
|
|
|
'documento_acessorio', 'expediente_materia', |
|
|
|
'documento_acessorio', 'expediente_materia', |
|
|
|
'legislacao_citada', 'materia_assunto', |
|
|
|
'numeracao', 'ordem_dia', 'parecer', |
|
|
|
'proposicao', 'registro_votacao', |
|
|
@ -32,9 +32,15 @@ mapa['comissao'] = ['composicao_comissao'] |
|
|
|
mapa['sessao_legislativa'] = ['composicao_mesa'] |
|
|
|
mapa['tipo_expediente'] = ['expediente_sessao_plenaria'] |
|
|
|
|
|
|
|
tab_pk = {'materia_legislativa': 'cod_materia'} |
|
|
|
|
|
|
|
|
|
|
|
""" |
|
|
|
mapa['autor'] = ['tipo_autor', 'partido', 'comissao', 'parlamentar'] |
|
|
|
mapa['parlamentar'] = ['autor', 'autoria', 'composicao_comissao', |
|
|
|
'composicao_mesa', 'dependente', 'filiacao', |
|
|
|
'mandato', 'mesa_sessao_plenaria', 'oradores', |
|
|
|
'oradores_expediente', 'ordem_dia_presenca', |
|
|
|
'registro_votacao_parlamentar', 'relatoria', |
|
|
|
'sessao_plenaria_presenca', 'unidade_tramitacao'] |
|
|
|
""" |
|
|
|
|
|
|
|
def get_ids_excluidos(cursor, query): |
|
|
|
""" |
|
|
@ -46,13 +52,13 @@ def get_ids_excluidos(cursor, query): |
|
|
|
excluidos = [str(val) for sublist in excluidos for val in sublist] |
|
|
|
return excluidos |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None): |
|
|
|
|
|
|
|
|
|
|
|
QUERY = SELECT_EXCLUIDOS % (pk, tabela_principal, pk) |
|
|
|
ids_excluidos = get_ids_excluidos(cursor, QUERY) |
|
|
|
print("\nRegistros da tabela '%s' com ind_excluido = 1: %s" % (tabela_principal.upper(), len(ids_excluidos))) |
|
|
|
|
|
|
|
|
|
|
|
""" |
|
|
|
Remove registros de tabelas que dependem da tabela principal, |
|
|
|
e que se encontram com ind_excluido = 0 (nao excluidas), se |
|
|
@ -61,14 +67,14 @@ def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None): |
|
|
|
if ids_excluidos: |
|
|
|
print("Dependencias inconsistentes") |
|
|
|
for tabela in mapa[tabela_principal]: |
|
|
|
|
|
|
|
|
|
|
|
QUERY_DEP = REGISTROS_INCONSISTENTES % (tabela, pk, ','.join(ids_excluidos)) |
|
|
|
|
|
|
|
|
|
|
|
# Trata caso especifico de norma_juridica |
|
|
|
if query_dependentes: |
|
|
|
QUERY_DEP = query_dependentes % (','.join(ids_excluidos), |
|
|
|
','.join(ids_excluidos)) |
|
|
|
|
|
|
|
|
|
|
|
print(tabela.upper(), cursor.execute(QUERY_DEP)) |
|
|
|
|
|
|
|
""" |
|
|
@ -79,8 +85,8 @@ def remove_tabelas(cursor, tabela_principal, pk, query_dependentes=None): |
|
|
|
for tabela in mapa[tabela_principal] + [tabela_principal]: |
|
|
|
QUERY = EXCLUI_REGISTRO % tabela |
|
|
|
print(tabela.upper(), cursor.execute(QUERY)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def remove_excluidas(cursor): |
|
|
|
cursor.execute("SHOW_TABLES") |
|
|
|
for row in cursor.fetchall(): |
|
|
@ -88,7 +94,13 @@ def remove_excluidas(cursor): |
|
|
|
|
|
|
|
|
|
|
|
def remove_proposicao_invalida(cursor): |
|
|
|
return cursor.execute("DELETE FROM proposicao WHERE cod_mat_ou_doc is null") |
|
|
|
return cursor.execute( |
|
|
|
"DELETE FROM proposicao WHERE cod_mat_ou_doc is null") |
|
|
|
|
|
|
|
|
|
|
|
def remove_materia_assunto_invalida(cursor): |
|
|
|
return cursor.execute( |
|
|
|
"DELETE FROM materia_assunto WHERE cod_assunto = 0") |
|
|
|
|
|
|
|
|
|
|
|
def shotgun_remove(cursor): |
|
|
@ -97,10 +109,13 @@ def shotgun_remove(cursor): |
|
|
|
cursor.execute("DELETE FROM %s WHERE ind_excluido = 1" % tabela) |
|
|
|
except: |
|
|
|
pass |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
connection = pymysql.connect(host=HOST, user=USER, password=PASSWORD, db=DB) |
|
|
|
connection = pymysql.connect(host=HOST, |
|
|
|
user=USER, |
|
|
|
password=PASSWORD, |
|
|
|
db=DB) |
|
|
|
cursor = connection.cursor() |
|
|
|
# MATERIA LEGISLATIVA |
|
|
|
remove_tabelas(cursor, 'materia_legislativa', 'cod_materia') |
|
|
@ -112,9 +127,17 @@ if __name__ == '__main__': |
|
|
|
remove_tabelas(cursor, 'sessao_legislativa', 'cod_sessao_leg') |
|
|
|
# EXPEDIENTE SESSAO |
|
|
|
remove_tabelas(cursor, 'tipo_expediente', 'cod_expediente') |
|
|
|
# AUTOR |
|
|
|
remove_tabelas(cursor, 'autor', 'cod_autor') |
|
|
|
# PARLAMENTAR |
|
|
|
remove_tabelas(cursor, 'parlamentar', 'cod_parlamentar') |
|
|
|
|
|
|
|
# PROPOSICAO |
|
|
|
remove_proposicao_invalida(cursor) |
|
|
|
|
|
|
|
# shotgun_remove(cursor) |
|
|
|
# MATERIA_ASSUNTO |
|
|
|
remove_materia_assunto_invalida(cursor) |
|
|
|
|
|
|
|
# shotgun_remove(cursor) |
|
|
|
|
|
|
|
cursor.close() |
|
|
|