os.getenv viene utilizzato per ottenere il valore di una variabile di ambiente e restituisce None per impostazione predefinita se quella variabile non esiste. Gli stai passando la stringa di connessione, che (quasi certamente) non esiste come variabile di ambiente. Quindi restituisce None , che viene assegnato a create_engine , che non riesce perché prevede una stringa di connessione. Basta passare direttamente la stringa di connessione:
engine = create_engine("postgresql://postgres:example@sqldat.com:5432/lecture3")