Para fins de aprendizagem talvez sim. Mas em um aplicativo real executado em um ambiente de produção, essa não é uma situação ideal.
Normalmente, você sempre desejaria ter um pool de conexões entre seu aplicativo e o banco de dados. Não importa qual idioma/banco de dados você esteja usando, esta é uma solução comum.
Um conjunto de conexões de banco de dados mantém várias conexões abertas. A camada de aplicação simplesmente pega uma conexão que não está sendo usada, as conexões são liberadas quando a camada de aplicação não precisa mais delas. Por "liberado" quero dizer que eles são devolvidos ao pool para serem usados novamente.
Resumindo, as conexões não são abertas/fechadas por solicitação. Eles são adquiridos/liberados de/para o pool de conexão do banco de dados.
Por exemplo, com Python e mysql você pode usar PySQLPool .