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.

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. Pour plus d’informations, voir Connexion à Snowflake avec l’API Python Snowflake.

Le code de l’exemple suivant utilise les paramètres de connexion définis dans un fichier de configuration pour créer une connexion à Snowflake. En utilisant l’objet Session obtenu, le code crée un objet Root pour utiliser les types et les méthodes de l’API.

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

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

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éer 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. Le code crée ensuite la base de données en transmettant l’objet Database à la méthode DatabaseCollection.create, créant ainsi la base de données.

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

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

Obtenir les 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 les bases de données

Vous pouvez répertorier les bases de données via la méthode iter. Cette méthode renvoie un itérateur PagedIter.

Le code de l’exemple suivant répertorie les bases de données dont le nom commence par « my », en imprimant le nom de chacune.

from snowflake.core import Root

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

Supprimer 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éer 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. Le code crée ensuite le schéma en transmettant l’objet Schema à la méthode SchemaCollection.create, créant ainsi le schéma dans la base de données my_db.

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

Obtenir les détails du 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 obtient un objet Schema représentant 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 schémas de la base de données my_db, en imprimant le nom de chaque schéma.

from snowflake.core import Root

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

Supprimer 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éer 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. Le code crée ensuite la table en transmettant l’objet Table à la méthode TableCollection.create, créant ainsi la table dans la base de données my_db et le schéma my_schema.

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

Obtenir les détails de la 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éer ou mettre à jour 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 sur 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

Répertorier les tables

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

Le code de l’exemple suivant répertorie les tables dont le nom commence par « my », en imprimant le nom de chacune.

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

Supprimer 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