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