os.getenv służy do pobierania wartości zmiennej środowiskowej i zwraca None domyślnie, jeśli ta zmienna nie istnieje. Przekazujesz mu swoje parametry połączenia, które (prawie na pewno) nie istnieją jako zmienna środowiskowa. Więc zwraca None , który jest przekazywany do create_engine , co kończy się niepowodzeniem, ponieważ oczekuje parametrów połączenia. Po prostu przekaż swoje parametry połączenia bezpośrednio:
engine = create_engine("postgresql://postgres:example@sqldat.com:5432/lecture3")