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

Hana picture Hana · Nov 13, 2018 · Viewed 8.9k times · Source

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)

Answer

Jake Z picture Jake Z · Mar 17, 2020

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.