Verwalten von Snowflake-Datenbanken, -Schemas und -Tabellen mit Python

Mit Python können Sie Snowflake-Datenbanken, -Schemas und -Tabellen verwalten. Weitere Informationen zum Verwalten und Verwenden von Daten in Snowflake finden Sie unter Datenbanken, Tabellen und Ansichten – Überblick.

Voraussetzungen

Die Beispiele unter diesem Thema gehen davon aus, dass Sie Code hinzugefügt haben, um eine Verbindung zu Snowflake herzustellen und ein Root-Objekt zu erstellen, von dem aus Sie die Snowflake-Python-API verwenden können.

Beispielsweise verwendet der folgende Code Verbindungsparameter, die in einer Konfigurationsdatei definiert sind, um eine Verbindung zu Snowflake zu erstellen:

from snowflake.core import Root
from snowflake.snowpark import Session

session = Session.builder.config("connection_name", "myconnection").create()
root = Root(session)
Copy

Unter Verwendung des resultierenden Session-Objekts erstellt der Code ein Root-Objekt, das die Typen und Methoden der API verwendet. Weitere Informationen dazu finden Sie unter Verbindung zu Snowflake über Snowflake-Python-API herstellen.

Verwalten von Datenbanken

Sie können Datenbanken in Snowflake verwalten. Die Snowflake-Python-API repräsentiert Datenbanken mit zwei verschiedenen Typen:

  • Database: Zeigt die Eigenschaften einer Datenbank an, z. B. ihren Namen.

  • DatabaseResource: Stellt Methoden zur Verfügung, mit denen Sie ein entsprechendes Database-Objekt abrufen und die Datenbank löschen können.

Erstellen einer Datenbank

Sie können eine Datenbank erstellen, indem Sie die Methode DatabaseCollection.create aufrufen und ein Database-Objekt übergeben, das die zu erstellende Datenbank repräsentiert. Um eine Datenbank zu erstellen, erstellen Sie zunächst ein Database-Objekt, das den Namen der Datenbank angibt.

Der Code im folgenden Beispiel erstellt ein Database-Objekt, das eine Datenbank mit dem Namen my_db repräsentiert, und erstellt dann die Datenbank, indem das Database-Objekt an die Methode DatabaseCollection.create übergeben wird:

from snowflake.core import Root
from snowflake.core.database import Database

my_db = Database(name="my_db")
root.databases.create(my_db)
Copy

Abrufen von Datenbankdetails

Sie können Informationen zu einer Datenbank erhalten, indem Sie die Methode DatabaseResource.fetch aufrufen, die ein Database-Objekt zurückgibt.

Der Code im folgenden Beispiel ruft Informationen zu einer Datenbank namens my_db ab:

from snowflake.core import Root
from snowflake.core.database import Database

my_db = root.databases["my_db"].fetch()
print(my_db.to_dict())
Copy

Auflisten von Datenbanken

Zum Auflisten von Datenbanken können Sie die Methode iter verwenden, die einen PagedIter-Iterator zurückgibt.

Der Code im folgenden Beispiel listet Datenbanken auf, deren Namen mit my beginnen:

from snowflake.core import Root

databases = root.databases.iter(like="my%")
for database in databases:
  print(database.name)
Copy

Löschen von Datenbanken

Sie können eine Datenbank mit der Methode DatabaseResource.delete löschen.

Der Code im folgenden Beispiel löscht die Datenbank my_db:

from snowflake.core import Root
from snowflake.core.database import Database

my_db_res = root.databases["my_db"]
my_db_res.delete()
Copy

Verwalten von Schemas

Sie können Schemas in Snowflake verwalten. Ein Schema ist ein Objekt auf Datenbankebene. Wenn Sie ein Schema erstellen oder darauf verweisen, tun Sie dies im Kontext der zugehörigen Datenbank.

Die Snowflake-Python-API repräsentiert Schemas mit zwei verschiedenen Typen:

  • Schema: Zeigt die Eigenschaften eines Schemas an, z. B. dessen Namen.

  • SchemaResource: Stellt Methoden zur Verfügung, mit denen Sie ein entsprechendes Schema-Objekt abrufen und das Schema löschen können.

Erstellen eines Schemas

Um ein Schema zu erstellen, erstellen Sie zunächst ein Schema-Objekt, das den Schemanamen angibt.

Der Code im folgenden Beispiel erstellt ein Schema-Objekt, das ein Schema namens my_schema repräsentiert:

from snowflake.core import Root
from snowflake.core.schema import Schema

my_schema = Schema(name="my_schema")
root.databases["my_db"].schemas.create(my_schema)
Copy

Der Code erstellt dann das Schema in der Datenbank my_db, indem das Schema-Objekt an die Methode SchemaCollection.create übergeben wird:

Abrufen von Schemadetails

Sie können Informationen zu einem Schema erhalten, indem Sie die Methode SchemaResource.fetch aufrufen, die ein Schema-Objekt zurückgibt.

Der Code im folgenden Beispiel ruft ein Schema-Objekt ab, das das Schema my_schema repräsentiert:

from snowflake.core import Root
from snowflake.core.schema import Schema

my_schema = root.databases["my_db"].schemas["my_schema"].fetch()
print(my_schema.to_dict())
Copy

Auflisten von Schemas

Mit der Methode iter können Sie die Schemas einer bestimmten Datenbank auflisten. Die Methode gibt einen PagedIter-Iterator für Schema-Objekte zurück.

Der Code im folgenden Beispiel listet Schemanamen der Datenbank my_db auf:

from snowflake.core import Root

schema_list = root.databases["my_db"].schemas.iter()
for schema_obj in schema_list:
  print(schema_obj.name)
Copy

Löschen von Schemas

Sie können ein Schema mit der Methode SchemaResource.delete löschen.

Der Code im folgenden Beispiel löscht das Schema my_schema:

from snowflake.core import Root
from snowflake.core.schema import Schema

my_schema_res = root.databases["my_db"].schemas["my_schema"]
my_schema_res.delete()
Copy

Verwalten von Tabellen

Sie können Tabellen in Snowflake verwalten. Eine Tabelle ist ein Objekt auf Schemaebene. Wenn Sie eine Tabelle erstellen oder auf sie verweisen, tun Sie dies im Kontext des zugehörigen Schemas.

Die Snowflake-Python-API repräsentiert Tabellen mit zwei verschiedenen Typen:

  • Table: Zeigt die Eigenschaften einer Tabelle an, z. B. den Namen und die Spalten.

  • TableResource: Stellt Methoden zur Verfügung, mit denen Sie ein entsprechendes Table-Objekt abrufen, die Eigenschaften der Tabelle aktualisieren und die Tabelle löschen können.

Erstellen von Tabellen

Um eine Tabelle zu erstellen, erstellen Sie zunächst ein Table-Objekt, das den Tabellennamen, die Spaltennamen und die Datentypen der Spalten angibt.

Der Code im folgenden Beispiel erstellt ein Table-Objekt, das eine Tabelle namens my_table mit den angegebenen Spalten repräsentiert:

from snowflake.core import Root
from snowflake.core.table import Table, TableColumn

my_table = Table(
  name="my_table",
  columns=[TableColumn("c1", "int", nullable=False), TableColumn("c2", "string")]
)
root.databases["my_db"].schemas["my_schema"].tables.create(my_table)
Copy

Der Code erstellt dann die Tabelle in der Datenbank my_db und im Schema my_schema, indem das Table-Objekt an die Methode TableCollection.create übergeben wird.

Abrufen von Tabellendetails

Sie können Informationen zu einer Tabelle erhalten, indem Sie die Methode TableResource.fetch aufrufen, die ein Table-Objekt zurückgibt.

Der Code im folgenden Beispiel ruft Informationen zu einer Tabelle namens my_table ab:

from snowflake.core import Root
from snowflake.core.table import Table

my_table = root.databases["my_db"].schemas["my_schema"].tables["my_table"].fetch()
print(my_table.to_dict())
Copy

Erstellen oder Aktualisieren von Tabellen

Sie können die Merkmale einer vorhandenen Tabelle aktualisieren, indem Sie die Eigenschaften eines Table-Objekts festlegen, das eine vorhandene Tabelle repräsentiert, und dann das aktualisierte Objekt mit der Methode TableResource.create_or_update an Snowflake übergeben.

Sie können auch ein Table-Objekt übergeben, das eine neue Tabelle beschreibt, wenn Sie die Tabelle erstellen möchten.

Der Code im folgenden Beispiel fügt eine neue Spalte mit dem Namen c3 des Datentyps int zur Tabelle my_table hinzu und aktualisiert dann die Tabelle in Snowflake:

from snowflake.core import Root
from snowflake.core.table import PrimaryKey, Table, TableColumn

my_table = root.databases["my_db"].schemas["my_schema"].tables["my_table"].fetch(deep=True)
my_table.columns.append(TableColumn(name="c3", datatype="int", nullable=False, constraints=[PrimaryKey()]))

my_table_res = root.databases["my_db"].schemas["my_schema"].tables["my_table"]
my_table_res.create_or_update(my_table)
Copy

Auflisten von Tabellen

Sie können die Tabellen eines bestimmten Schemas mit der Methode iter auflisten, die einen Iterator PagedIter für Table-Objekte zurückgibt.

Der Code im folgenden Beispiel listet Tabellen auf, deren Namen mit my beginnen:

from snowflake.core import Root

tables = root.databases["my_db"].schemas["my_schema"].tables.iter(like="my%")
for table_obj in tables:
  print(table_obj.name)
Copy

Löschen von Tabellen

Sie können eine Tabelle mit der Methode TableResource.delete löschen.

Der Code im folgenden Beispiel löscht die Tabelle my_table.

from snowflake.core import Root
from snowflake.core.table import Table

my_table_res = root.databases["my_db"].schemas["my_schema"].tables["my_table"]
my_table_res.delete()
Copy