def get_memory_usage_of_db(connection):
with tempfile.NamedTemporaryFile(delete=True) as temp_file:
file_connection = sqlite3.connect(temp_file.name)
connection.backup(file_connection)
file_connection.close()
size_in_bytes = os.path.getsize(temp_file.name)
size_in_mb = size_in_bytes / (1024 * 1024)
return size_in_mb
db = ReadOnlyInMemorySQLite()
memory_usage = get_memory_usage_of_db(db.connection)
print(f"Memory usage of the database: {memory_usage} bytes")Sqlite
Essa seção carrega as informações para o banco e permite usuários de realizem queries nas informações.
Wrapper
A seguinte seção adiciona uma cada de abstração para a execução de queries SQLite. A presente aplicação requer o carregamento inicial do conjunto de dados abertos da UFRN, que é então disponibilizado para leitura de diversos usuários.
Precisa-se checar se a máquina que vai receber a aplicação tem memória suficiente para roda-la.
db.execute_query(f'SELECT unidade_responsavel FROM data LIMIT 1')unidade_responsavel = 'DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA'
nome_componente = 'FUNDAMENTOS MATEMÁTICOS DA COMPUTAÇÃO II'
docente = 'ATHANASIOS TSOUANAS'q = f"""SELECT descricao, COUNT(*) as contagem
FROM (
SELECT DISTINCT discente, descricao
FROM data
WHERE unidade_responsavel = '{unidade_responsavel}'
AND nome_componente = '{nome_componente}'
AND nome_docente = '{docente}'
)
GROUP BY descricao;"""import pandas as pd
data = pd.read_sql_query(q, db.connection)
data['porcentagem'] = (data['contagem'] / data['contagem'].sum()) * 100
datacontagem_descricao = data['descricao'].value_counts()
contagem_descricaocontagem_descricao.indexdb.execute_query("SELECT DISTINCT(nome_componente) from data WHERE unidade_responsavel = 'DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA' ORDER BY nome_componente")