# Postgres

## Configuration

Prism uses the `psycopg2-binary` module to instantiate and configure the Postgres connector. The specified configurations required in `profile.yml` are:

* `autocommit`: toggle whether the connection commits changes to the database after executing. The default is `True`.
* `host`: the hostname of Amazon Redshift cluster.
* `port`: the port number of the Amazon Redshift cluster.
* `database`: the name of the database to which you want to connect.
* `user`: the user name to use for authentication.
* `password`: the password to use for authentication

```yaml
# profile.yml

<profile name here>: # change this!
   adapters:
    <postgres adapter name here>: # change this!
       type: postgres
       autocommit: True
       host:
       port:
       database:
       user:
       password:

```

Under the hood, Prism takes care of parsing the configuration variables and establishing a connection to your Postgres instance.

## `hooks.sql()`

You can run queries against the Redshift cluster using the `hooks.sql` function:

```python
def run(self, tasks, hooks):
    data = hooks.sql(
        adapter_name="<postgres adapter name>",
        query="SELECT * FROM table"
    )
```

Note that when `return_type = None`, the result will be a list tuples containing the query data.
