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.

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. Weitere Informationen dazu finden Sie unter Verbinden mit Snowflake über die Snowflake-Python-API.

Der Code im folgenden Beispiel verwendet die in einer Konfigurationsdatei definierten Verbindungsparameter, um eine Verbindung zu Snowflake herzustellen. Unter Verwendung des resultierenden Session-Objekts erstellt der Code ein Root-Objekt, das die Typen und Methoden der API verwendet.

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

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

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.

Datenbank erstellen

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 namens my_db repräsentiert. Der Code erstellt dann die Datenbank, indem das Database-Objekt an die Methode DatabaseCollection.create übergeben und so die Datenbank erstellt wird.

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

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

Datenbankdetails abrufen

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

Datenbanken auflisten

Sie können Datenbanken mit der Methode iter auflisten. Diese Methode gibt einen PagedIter-Iterator zurück.

Der Code im folgenden Beispiel listet Datenbanken auf, deren Name mit „my“ beginnt, und gibt den Namen jeder einzelnen aus.

from snowflake.core import Root

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

Datenbank löschen

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.

Schema erstellen

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. Der Code erstellt dann das Schema, indem das Schema-Objekt an die Methode SchemaCollection.create übergeben und so das Schema in der Datenbank my_db erstellt wird.

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

Schemadetails abrufen

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

Schemas auflisten

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 Schemas der Datenbank my_db auf und gibt den Namen jedes Schemas aus.

from snowflake.core import Root

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

Schema löschen

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.

Tabelle erstellen

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. Der Code erstellt dann die Tabelle, indem das Table-Objekt an die Methode TableCollection.create übergeben und so die Tabelle in der Datenbank my_db und dem Schema my_schema erstellt wird.

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

Tabellendetails abrufen

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

Tabelle erstellen oder aktualisieren

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()
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

Tabellen auflisten

Sie können die Tabellen in einem bestimmten Schema mit der Methode iter auflisten. Die Methode gibt einen PagedIter-Iterator für Table-Objekte zurück.

Der Code im folgenden Beispiel listet Tabellen auf, deren Name mit „my“ beginnt, und gibt den Namen jeder einzelnen aus.

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

Tabelle löschen

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