Django Snowflake Backend

6.0 · active · verified Fri Apr 17

django-snowflake is a Django database backend that enables Django applications to connect to and use Snowflake data warehouses. It's currently at version 6.0 and is actively maintained, primarily releasing new versions to support the latest Django releases and address Snowflake-specific features or issues.

Common errors

Warnings

Install

Imports

Quickstart

Configure your `settings.py` `DATABASES` entry. It's recommended to use environment variables for sensitive credentials and connection details. The `NAME` parameter typically refers to the database in Snowflake. You can provide connection details via individual `OPTIONS` or a full `DSN` string.

import os

DATABASES = {
    "default": {
        "ENGINE": "django_snowflake",
        "NAME": os.environ.get("SNOWFLAKE_DATABASE", "mydb"),
        "USER": os.environ.get("SNOWFLAKE_USER", "my_user"),
        "OPTIONS": {
            "ACCOUNT": os.environ.get("SNOWFLAKE_ACCOUNT", "myaccount"),
            "PASSWORD": os.environ.get("SNOWFLAKE_PASSWORD", ""),
            "WAREHOUSE": os.environ.get("SNOWFLAKE_WAREHOUSE", "my_warehouse"),
            "ROLE": os.environ.get("SNOWFLAKE_ROLE", "my_role"),
            # Optional: Specify the schema if not using a DSN that includes it
            "SCHEMA": os.environ.get("SNOWFLAKE_SCHEMA", "public")
            # For key-pair authentication, provide PRIVATE_KEY instead of PASSWORD:
            # "PRIVATE_KEY": os.environ.get("SNOWFLAKE_PRIVATE_KEY", ""),
            # "PRIVATE_KEY_PASSPHRASE": os.environ.get("SNOWFLAKE_PRIVATE_KEY_PASSPHRASE", "")
        },
    }
}

# Example of using a DSN (Data Source Name) instead of separate options:
# DATABASES = {
#     "default": {
#         "ENGINE": "django_snowflake",
#         "NAME": os.environ.get("SNOWFLAKE_DATABASE", "mydb"),
#         "OPTIONS": {
#             "DSN": os.environ.get(
#                 "SNOWFLAKE_DSN",
#                 "snowflake://{user}:{password}@{account}.snowflakecomputing.com/{database}/{schema}?warehouse={warehouse}&role={role}"
#             ).format(
#                 user=os.environ.get("SNOWFLAKE_USER", "my_user"),
#                 password=os.environ.get("SNOWFLAKE_PASSWORD", ""),
#                 account=os.environ.get("SNOWFLAKE_ACCOUNT", "myaccount"),
#                 database=os.environ.get("SNOWFLAKE_DATABASE", "mydb"),
#                 schema=os.environ.get("SNOWFLAKE_SCHEMA", "public"),
#                 warehouse=os.environ.get("SNOWFLAKE_WAREHOUSE", "my_warehouse"),
#                 role=os.environ.get("SNOWFLAKE_ROLE", "my_role")
#             )
#         },
#     }
# }

view raw JSON →