sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:postgres
The URI should start with postgresql://
instead of postgres://
. SQLAlchemy used to accept both, but has removed support for the postgres
name.
SQLAlchemy 1.4 removed the deprecated postgres
dialect name, the name postgresql
must be used instead now. The dialect is the part before the ://
in the URL. SQLAlchemy 1.3 and earlier showed a deprecation warning but still accepted it.
To fix this, rename postgres://
in the URL to postgresql://
.
This error currently shows up when working with Heroku, which uses postgres
in the DATABASE_URL
they provide, which you probably use for SQLALCHEMY_DATABASE_URI
. To work around this until they update it, update the variable in the Heroku dashboard to use postgresql
.
The problem in heroku have been resolved by using simple python url replace code
import osimport reuri = os.getenv("DATABASE_URL") # or other relevant config varif uri and uri.startswith("postgres://"): uri = uri.replace("postgres://", "postgresql://", 1)# rest of connection code using the connection string `uri`
source : https://help.heroku.com/ZKNTJQSK/why-is-sqlalchemy-1-4-x-not-connecting-to-heroku-postgres