**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/providers/postgres/hooks/test_postgres.py
table = "table"
        rows = [
            (
                1,
                "hello",
            ),
            (
                2,
                "world",
            ),
        ]
        fields = ("id", "value")
        self.db_hook.insert_rows(table, rows, fields, replace=True)
    @pytest.mark.backend("postgres")
    def test_rowcount(self):
        hook = PostgresHook()
        input_data = ["foo", "bar", "baz"]
        with hook.get_conn() as conn:
            with conn.cursor() as cur:
                cur.execute(f"CREATE TABLE {self.table} (c VARCHAR)")
                values = ",".join(f"('{data}')" for data in input_data)
                cur.execute(f"INSERT INTO {self.table} VALUES {values}")
                conn.commit()
                assert cur.rowcount == len(input_data)