domino logo
Latest (5.7)
  • Overview
  • Domino Cloud
  • Domino Nexus
  • Code Assist
  • Get started
  • Work with data
  • Develop models
  • Scale out distributed computing
  • Register and govern models
  • Deploy models
  • Monitor models
  • Publish apps
  • Projects
  • Collaborate
  • Workspaces
  • Jobs
  • Environments
  • Executions
  • Launchers
  • Environment variables
  • Secure credential store
  • Organizations
  • Domino API
  • Domino CLI
  • Troubleshooting
  • Get help
  • Additional Resources
  • Send feedback
domino logo
About Domino
Domino Data LabKnowledge BaseData Science BlogTraining
>
User Guide
>
Work with data
>
Access external data
>
Data Source connectors
>
Connect to Redshift

Connect to Redshift

This topic describes how to connect to Amazon Redshift from Domino. You must have network connectivity between Redshift and your Domino deployment.

The easiest way to connect to Redshift from Domino is to create a Domino data source as described below.

Create a Redshift data source

  1. From the navigation pane, click Data.

  2. Click Create a Data Source.

  3. In the New Data Source window, from Select Data Store, select Amazon Redshift.

    New Data Source

  4. Enter the Host, Port, and name of the Database.

  5. Enter the Data Source Name.

  6. Optional: Enter a Description to explain the purpose of the data source to others.

  7. Click Next.

  8. Specify the credentials for authenticating to Redshift.

    Basic authentication is supported by default. IAM credential propagation might also be available if your administrator has enabled it.

    Note
  9. Select who can view and use the data source in projects.

  10. Click Finish Setup.

Next steps

  • Get code snippets for accessing this data source in your workspace.

  • Share this data source with your collaborators.

Alternate way to connect to a Redshift data source

Warning

Prerequisites

  • Domino recommends storing your database username and password as environment variables in your project. This lets you access them at runtime without including them in your code.

Python

To establish a connection to Redshift with the psycopg2 library:

import psycopg2
import os

HOST = os.environ['REDSHIFT_HOST']
PORT = 5439 # redshift default
USER = os.environ['REDSHIFT_USER']
PASSWORD = os.environ['REDSHIFT_PASSWD']
DATABASE = 'mydatabase'

def db_connection():
    conn = psycopg2.connect(
        host=HOST,
        port=PORT,
        user=USER,
        password=PASSWORD,
        database=DATABASE,
    )
    return conn

example_query = "SELECT * FROM my_table LIMIT 5"

conn = db_connection()
try:
    cursor = conn.cursor()
    cursor.execute(example_query)
    results = cursor.fetchall() # careful, the results could be huge
    conn.commit()
    print results
finally:
    conn.close()

# using pandas
import pandas as pd
conn = db_connection()
try:
    df = pd.read_sql(example_query, conn)
    df.to_csv('results/outfile.csv', index=False)
finally:
    conn.close()

R

To establish a connection to Redshift with the RPostgreSQL library:

install.packages("RPostgreSQL")
library(RPostgreSQL)

redshift_host <- Sys.getenv("REDSHIFT_HOST")
redshift_port <- "5439"
redshift_user <- Sys.getenv("REDSHIFT_USER")
redshift_password <- Sys.getenv("REDSHIFT_PASSWORD")
redshift_db <- "mydatabase"

drv <- dbDriver("PostgreSQL")
conn <- dbConnect(
    drv,
    host=redshift_host,
    port=redshift_port,
    user=redshift_user,
    password=redshift_password,
    dbname=redshift_db)

tryCatch({
    example_query <- "SELECT * FROM my_table LIMIT 5"
    results <- dbGetQuery(conn, example_query)
    print(results)
}, finally = {
    dbDisconnect(conn)
})
Domino Data Lab
Knowledge Base
Data Science Blog
Training
Copyright © 2022 Domino Data Lab. All rights reserved.