I want to deploy a FastAPI application with Heroku and Heroku Postgres. Unfortunately, Heroku deployment database URL starts with postgres:// whereas SQLAlchemy now only allows for postgresql://. Thus, I want to update the DATABASE_URL variable directly in the application itself.
I've tried to update it manually and as to several suggestions in Pydantic:
def get_database_url(url):
    if url.startswith("postgres://"):
        url = url.replace("postgres://", "postgresql://", 1)
    return URL
#attempt 1
class Settings(BaseSettings):
    load_dotenv()
    DATABASE_URL: str = get_database_url(os.getenv("DATABASE_URL"))
#attempt 2
class Settings(BaseSettings):
    ...
    class Config:
        @validator("DATABASE_URL", pre=True)
        def parse_env_var(cls, value: str):
            return get_database_url(value)
#attempt 3
class Settings(BaseSettings):
    ...
    class Config:
        @classmethod
        def parse_env_var(cls, field_name: str, raw_val: str) -> Any:
            if field_name == 'DATABASE_URL':
                return get_database_url(raw_val)
            return cls.json_loads(raw_val)
All of which give the same error:
sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres
How can I update this value after getting it from the environment file?
 
    