W celach edukacyjnych może tak. Ale w rzeczywistej aplikacji działającej w środowisku produkcyjnym to wcale nie jest idealna sytuacja.
Zwykle zawsze chciałbyś mieć pulę połączeń między aplikacją a bazą danych. Bez względu na to, jakiego języka/bazy danych używasz, jest to powszechne rozwiązanie.
Pula połączeń bazy danych utrzymuje liczbę otwartych połączeń. Warstwa aplikacji po prostu przyjmuje połączenie, które nie jest używane, połączenia są zwalniane, gdy warstwa aplikacji już ich nie potrzebuje. Przez „uwolnione” rozumiem, że wracają do puli, aby można było ich ponownie użyć.
Podsumowując, połączenia nie są otwierane/zamykane na żądanie. Są pozyskiwane/zwalniane z/do puli połączeń bazy danych.
Na przykład z Pythonem i mysql możesz wybrać PySQLPool .