【问题标题】:How to connect to snowflake database from Django framework如何从 Django 框架连接到雪花数据库
【发布时间】:2020-02-24 20:22:24
【问题描述】:

我是 Django 新手,我正在尝试显示来自雪花数据库的结果。我知道 Django 有多个内置的数据库后端引擎,例如:django.db.backends.postgresqldjango.db.backends.mysql 以及它支持的其他几个。

很遗憾,我在

中找不到配置数据库后端引擎的正确方法

settings.py

当我输入sqlalchemysnowflake-sqlalchemy 作为引擎时,我得到这个错误:

Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'

我的猜测是使用sqlalchemy,因为这是我通常用来在 Django 之外连接到 Snowflake 的方法,但由于某种原因,它无法正常工作。

我将不胜感激。

【问题讨论】:

  • 我相信 sqlalchemy 是 Django 的必经之路。当你说它不能正常工作时,你是收到错误还是 Django 没有按照你的预期做?
  • 我收到此错误:Try using 'django.db.backends.XXX', where XXX is one of: 'mysql', 'oracle', 'postgresql', 'sqlite3'
  • 最后我检查了没有直接支持 django 和 Snowflake,但我在其他地方看到了使用 SQLAlchemy docs.snowflake.net/manuals/user-guide/sqlalchemy.html 或 django_pyodbc 或的建议

标签: django database-connection snowflake-cloud-data-platform


【解决方案1】:

您应该安装一个自定义的Snowflake 引擎,如下所示。请注意,截至今天,这些还不完整。不过,通过完成operations.py文件来实现缺少的Django功能应该不难。

->https://github.com/pricemoov/django-snowflake

->https://pypi.org/project/django-snowflake-backend/

【讨论】:

    【解决方案2】:
    please install snowflake-connector-python .E.g. below
    pip3 install snowflake-connector-python==1.8.1
    Here is the code to connect from SQL Alchemy.
    
    =====================================================================
    #!/usr/bin/env python
    from snowflake.sqlalchemy import URL
    from sqlalchemy import create_engine
    
    engine = create_engine(URL(
        account = 'XXXX',
        user = 'XXXX',
        password = 'XXXXX',
        database = 'XXXXXX',
        schema = 'XXXXXX',
        warehouse = 'XXXXX',
        role='XXXXXXXX',
    ))
    
    
    
    
    try:
        connection = engine.connect()
        connection.execute(
            "CREATE OR REPLACE TABLE test_async(c1 TIMESTAMP_NTZ,c2 VARIANT)",_no_results=True)
    
    
    
    finally:
        connection.close()
        engine.dispose()
    
    =========================================================================
    

    【讨论】:

    • 这并不能解决 OP 让 Django 使用 Snowflake 的问题