How to connect Amazon Redshift to python
It appears that you wish to run Amazon Redshift queries from Python code.
The parameters you would want to use are:
- dbname: This is the name of the database you entered in the
Database name
field when the cluster was created. - user: This is you entered in the
Master user name
field when the cluster was created. - password: This is you entered in the
Master user password
field when the cluster was created. - host: This is the Endpoint provided in the Redshift management console (without the port at the end):
redshifttest-xyz.cooqucvshoum.us-west-2.redshift.amazonaws.com
- port:
5439
For example:
con=psycopg2.connect("dbname=sales host=redshifttest-xyz.cooqucvshoum.us-west-2.redshift.amazonaws.com port=5439 user=master password=secret")
Old question but I just arrived here from Google.
The accepted answer doesn't work with SQLAlchemy, although it's powered by psycopg2:
sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string 'dbname=... host=... port=... user=... password=...'
What worked:
create_engine(f"postgresql://{REDSHIFT_USER}:{REDSHIFT_PASSWORD}@{REDSHIFT_HOST}:{REDSHIFT_PORT}/{REDSHIFT_DATABASE}")
Which works with psycopg2 directly too:
psycopg2.connect(f"postgresql://{REDSHIFT_USER}:{REDSHIFT_PASSWORD}@{REDSHIFT_HOST}:{REDSHIFT_PORT}/{REDSHIFT_DATABASE}")
Using the postgresql
dialect works because Amazon Redshift is based on PostgreSQL.
Hope it can help other people!