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)
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 objetDatabase
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)
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())
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)
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()
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 objetSchema
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)
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())
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)
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()
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 objetTable
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)
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())
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)
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)
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()