os.getenv се използва за получаване на стойността на променлива на средата и връща None по подразбиране, ако тази променлива не съществува. Предавате му своя низ за връзка, който (почти сигурно) не съществува като променлива на средата. Така че връща None , който се дава на create_engine , което се проваля, защото очаква низ за връзка. Просто предайте своя низ за връзка директно:
engine = create_engine("postgresql://postgres:example@sqldat.com:5432/lecture3")