**Apache Airflow version**:


**Kubernetes version (if you are using kubernetes)** (use `kubectl version`):

**Environment**:

- **Cloud provider or hardware configuration**:
- **OS** (e.g. from /etc/os-release):
- **Kernel** (e.g. `uname -a`):
- **Install tools**:
- **Others**:

**What happened**:
`get_uri()` and `get_sqlalchemy_engine()` had not been implemented in PostgresHook.

When using `PostgresHook('CONNECTION_NAME', schema='another_schema').get_sqlalchemy_engine()` that will still use connection default schema setting through `get_uri()`, instead of schema that is assigned to `PostgresHook()`.

**What you expected to happen**:
`get_uri()` should follow schema in PostgresHook.

**How to reproduce it**:
`PostgresHook('CONNECTION_NAME', schema='another_schema'). get_uri()`

**Anything else we need to know**:


tests/hooks/test_dbapi.py
sql = 'SQL'
        param = ('p1', 'p2')
        called = 0
        obj = object()
        def handler(cur):
            cur.execute.assert_called_once_with(sql, param)
            nonlocal called
            called += 1
            return obj
        result = self.db_hook.run(sql, parameters=param, handler=handler)
        assert called == 1
        assert self.conn.commit.called
        assert result == obj
    def test_run_with_handler_multiple(self):
        sql = ['SQL', 'SQL']
        param = ('p1', 'p2')
        called = 0
        obj = object()
        def handler(cur):
            cur.execute.assert_called_with(sql[0], param)
            nonlocal called
            called += 1
            return obj
        result = self.db_hook.run(sql, parameters=param, handler=handler)
        assert called == 2
        assert self.conn.commit.called
        assert result == [obj, obj]