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)
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 entsprechendesDatabase
-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)
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())
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)
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()
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 entsprechendesSchema
-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)
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())
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)
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()
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 entsprechendesTable
-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)
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())
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)
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)
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()