NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:snowflake

Viewed 24161

I've installed all the necessary packages:

pip install --upgrade snowflake-sqlalchemy

I am running this test code from the snowflake docs:

from sqlalchemy import create_engine

engine = create_engine(
    'snowflake://{user}:{password}@{account}/'.format(
        user='<your_user_login_name>',
        password='<your_password>',
        account='<your_account_name>',
    )
)
try:
    connection = engine.connect()
    results = connection.execute('select current_version()').fetchone()
    print(results[0])
finally:
    connection.close()
    engine.dispose()

My output should be the snowflake version e.g. 1.48.0

But I get the error

NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:snowflake

(I am trying to run this in Anaconda)

5 Answers

I had similar issues when I tried to deploy code to an Azure Function App. sqlalchemy would find the module when I ran the code locally, but it failed to resolve the dialect on remote deployment and execution.

I resolved the issue there by running the following before calling create_engine:

from sqlalchemy.dialects import registry

...

registry.register('snowflake', 'snowflake.sqlalchemy', 'dialect')

I suspect that snowflake-sqlalchemy fails to self-register in certain environments.

This error generally appears due to a bad installation of the sqlalchemy package. Check the sqlalchemy.dialects folder to ensure that your dbapi folder exists.

Try to upgrade your sqlalchemy package:

pip install --upgrade sqlalchemy

Try adding a couple additional imports:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from snowflake.sqlalchemy import URL

This fixed the issue for me.

Maybe you are using conda? Then

conda install --yes snowflake-sqlalchemy

Note, it also still requires snowflake-connector-python being installed as well!

Related