Gestion des bases de données, schémas et tables Snowflake avec Python

Vous pouvez utiliser Python pour gérer les bases de données, schémas et tables Snowflake. Pour plus d’informations sur la gestion et l’utilisation des données dans Snowflake, voir Bases de données, tables et vues - Vue d’ensemble.

Conditions préalables

Les exemples de cette rubrique supposent que vous ayez ajouté le code nécessaire pour vous connecter à Snowflake et créer un objet Root à partir duquel utiliser l’API Python Snowflake.

Par exemple, le code suivant utilise les paramètres de connexion définis dans un fichier de configuration pour créer une connexion à Snowflake.

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

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

En utilisant l’objet Session obtenu, le code crée un objet Root pour utiliser les types et les méthodes de l’API. Pour plus d’informations, voir Se connecter à Snowflake avec l’API Python Snowflake.

Gestion des bases de données

Vous pouvez gérer des bases de données dans Snowflake. L’API Python Snowflake représente des bases de données de deux types distincts :

  • Database : expose les propriétés d’une base de données telles que son nom.

  • DatabaseResource : Expose des méthodes que vous pouvez utiliser pour récupérer un objet Database correspondant et pour supprimer la base de données.

Création d’une base de données

Vous pouvez créer une base de données en appelant la méthode DatabaseCollection.create et en lui transmettant un objet Database représentant la base de données que vous souhaitez créer. Pour créer une base de données, commencez par créer un objet Database qui spécifie le nom de la base de données.

Le code de l’exemple suivant crée un objet Database représentant une base de données appelée my_db puis crée la base de données en transmettant l’objet Database à la méthode DatabaseCollection.create :

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

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

Obtention de détails de la base de données

Vous pouvez obtenir des informations sur une base de données en appelant la méthode DatabaseResource.fetch, qui renvoie un objet Database.

Le code de l’exemple suivant permet d’obtenir des informations sur une base de données appelée my_db :

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

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

Répertorier des bases de données

Vous pouvez répertorier les bases de données en utilisant la méthode iter, qui renvoie un itérateur PagedIter.

Le code de l’exemple suivant répertorie les bases de données dont le nom commence par my :

from snowflake.core import Root

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

Suppression d’une base de données

Vous pouvez supprimer une base de données via la méthode DatabaseResource.delete.

Le code de l’exemple suivant supprime la base de données 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

Gestion des schémas

Vous pouvez gérer les schémas dans Snowflake. Un schéma est un objet au niveau de la base de données. Lorsque vous créez ou référencez un schéma, vous le faites dans le contexte de sa base de données.

L’API Python Snowflake représente les schémas de deux types distincts :

  • Schema : expose les propriétés d’un schéma telles que son nom.

  • SchemaResource : Expose des méthodes que vous pouvez utiliser pour récupérer un objet Schema correspondant et pour supprimer le schéma.

Création d’un schéma

Pour créer un schéma, commencez par créer un objet Schema qui spécifie le nom du schéma.

Le code de l’exemple suivant crée un objet Schema représentant un schéma appelé my_schema :

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

Le code crée ensuite le schéma dans la base de données my_db en transmettant l’objet Schema à la méthode SchemaCollection.create.

Obtention de détails sur le schéma

Vous pouvez obtenir des informations sur un schéma en appelant la méthode SchemaResource.fetch, qui renvoie un objet Schema.

Le code de l’exemple suivant permet d’obtenir un objet Schema qui représente le schéma my_schema :

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

Répertorier les schémas

Vous pouvez répertorier les schémas d’une base de données spécifiée via la méthode iter. La méthode renvoie un itérateur PagedIter d’objets Schema.

Le code de l’exemple suivant répertorie les noms des schémas de la base de données my_db :

from snowflake.core import Root

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

Suppression d’un schéma

Vous pouvez supprimer un schéma via la méthode SchemaResource.delete.

Le code de l’exemple suivant supprime le schéma 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

Gestion des tables

Vous pouvez gérer des tables dans Snowflake. Une table est un objet au niveau du schéma. Lorsque vous créez ou référencez une table, vous le faites dans le contexte de son schéma.

L’API Python Snowflake représente les tables de deux types distincts :

  • Table : expose les propriétés d’une table telles que son nom et ses colonnes.

  • TableResource : Expose des méthodes que vous pouvez utiliser pour récupérer un objet Table correspondant, mettre à jour les propriétés de la table et supprimer la table.

Création d’une table

Pour créer une table, commencez par créer un objet Table qui spécifie le nom de la table, les noms de colonne et les types de données des colonnes.

Le code de l’exemple suivant crée un objet Table représentant une table appelée my_table avec les colonnes spécifiées :

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

Le code crée ensuite la table dans la base de données my_db et le schéma my_schema en transmettant l’objet Table à la méthode TableCollection.create.

Obtention des détails d’une table

Vous pouvez obtenir des informations sur une table en appelant la méthode TableResource.fetch, qui renvoie un objet Table.

Le code de l’exemple suivant permet d’obtenir des informations sur une table appelée my_table :

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

Création ou mise à jour d’une table

Vous pouvez mettre à jour les caractéristiques d’une table existante en définissant les propriétés d’un objet Table qui représente une table existante, puis en transmettant l’objet mis à jour à Snowflake via la méthode TableResource.create_or_update.

Vous pouvez également transmettre un objet Table décrivant une nouvelle table lorsque vous souhaitez créer la table.

Le code de l’exemple suivant ajoute une nouvelle colonne nommée c3 de type de données int à la table my_table, puis met à jour la table dans 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

Répertorier les tables

Vous pouvez répertorier les tables d’un schéma spécifié en utilisant la méthode iter, qui renvoie un itérateur PagedIter d’objets Table.

Le code de l’exemple suivant répertorie les tables dont le nom commence par my :

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

Suppression d’une table

Vous pouvez supprimer une table via la méthode TableResource.delete.

Le code de l’exemple suivant supprime la table 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