Source code for parsons.databases.redshift.rs_schema

[docs]class RedshiftSchema(object): def schema_exists(self, schema): sql = f"select * from pg_namespace where nspname = '{schema}'" res = self.query(sql) return res.num_rows > 0
[docs] def create_schema_with_permissions(self, schema, group=None): """ Creates a Redshift schema (if it doesn't already exist), and grants usage permissions to a Redshift group (if specified). `Args:` schema: str The schema name group: str The Redshift group name type: str The type of permissions to grant. Supports `select`, `all`, etc. (For full list, see the `Redshift GRANT docs <https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html>`_) """ # noqa: E501,E261 if not self.schema_exists(schema): self.query(f"create schema {schema}") self.query(f"grant usage on schema {schema} to group {group}")
[docs] def grant_schema_permissions(self, schema, group, permissions_type='select'): """ Grants a Redshift group permissions to all tables within an existing schema. `Args:` schema: str The schema name group: str The Redshift group name type: str The type of permissions to grant. Supports `select`, `all`, etc. (For full list, see the `Redshift GRANT docs <https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html>`_) """ # noqa: E501,E261 sql = f""" grant usage on schema {schema} to group {group}; grant {permissions_type} on all tables in schema {schema} to group {group}; """ self.query(sql)