使用 Python 管理 Snowflake 数据库、架构、表和视图¶
您可以使用 Python 来管理 Snowflake 数据库、架构、表和视图。有关在 Snowflake 中管理和使用数据的详细信息,请参阅 数据库、表和视图 – 概览。
先决条件¶
在本主题中的示例中,假设您已添加了用来连接 Snowflake 和创建 Root 对象以使用 Snowflake Python APIs 的代码。
例如,以下代码使用配置文件中定义的连接参数来创建与 Snowflake 的连接:
代码可通过生成的 Session 对象创建 Root 对象,从而使用 API 的类型和方法。有关更多信息,请参阅 使用 Snowflake Python APIs 连接到 Snowflake。
管理数据库¶
您可以在 Snowflake 中管理数据库。Snowflake Python APIs 使用两种不同类型来表示数据库:
Database:显示数据库的属性,例如其名称。DatabaseResource:显示可用于提取相应Database对象和删除数据库的方法。
主题
创建数据库¶
您可以通过调用 DatabaseCollection.create 方法并传递一个表示要创建的数据库的 Database 对象来创建数据库。要创建数据库,请先创建一个指定数据库名称的 Database 对象。
以下示例中的代码会创建一个表示数据库 my_db 的 Database 对象,然后通过将该 Database 对象传递给 DatabaseCollection.create 方法来创建该数据库:
获取数据库详细信息¶
您可以通过调用 DatabaseResource.fetch 方法来获取有关数据库的信息,该方法会返回一个:code:Database 对象。
以下示例中的代码会获取有关名为 my_db 的数据库的信息:
列出数据库¶
您可以使用 iter 方法列出数据库,该方法会返回一个 PagedIter 迭代器。
以下示例中的代码会列出名称以 my 开头的数据库:
删除或恢复数据库¶
您可以使用 DatabaseResource.drop 方法删除数据库或使用 DatabaseResource.undrop 方法恢复数据库。
要演示这些操作,请删除以下示例中的代码,然后恢复最新版本的 my_db 数据库:
管理架构¶
您可以在 Snowflake 中管理架构。架构是一个数据库级别的对象。当您创建或引用一个架构时,您是在其数据库的上下文中执行此操作的。
Snowflake Python APIs 使用两种不同类型来表示架构:
Schema:显示架构的属性,例如其名称。SchemaResource:显示可用于提取相应Schema对象和删除架构的方法。
主题
创建架构¶
要创建架构,请先创建一个指定架构名称的 Schema 对象。
以下示例中的代码会创建一个 Schema 对象,用于表示一个名为 my_schema 架构:
然后代码通过将该 Schema 对象传递到 SchemaCollection.create 方法在 my_db 数据库中创建该架构。
获取架构详细信息¶
您可以通过调用 SchemaResource.fetch 方法来获取关于该架构的信息,该方法会返回一个 Schema 对象。
以下示例中的代码会获取表示 my_schema 架构的 Schema 对象:
列出架构¶
您可以使用 iter 方法列出指定数据库中的架构。该方法会返回 Schema 对象的 PagedIter 迭代器。
以下示例中的代码会列出 my_db 数据库中的架构名称:
删除或恢复架构¶
您可以使用 SchemaResource.drop 方法删除架构或使用 SchemaResource.undrop 方法恢复架构。
要演示这些操作,请删除以下示例中的代码,然后恢复最新版本的 my_schema 架构:
管理标准表¶
您可以在 Snowflake 中管理标准表。表是一个架构级对象。当您创建或引用一个表时,您是在其架构的上下文中执行此操作的。
Snowflake Python APIs 使用两种不同类型来表示表:
Table:显示表的属性,例如其名称和列。TableResource:显示可用于提取相应Table对象、更新表的属性,以及删除表的方法。
主题
创建表¶
要创建表,请先创建指定表名称、列名称和列数据类型的 Table 对象。
以下示例中的代码会创建一个 Table 对象,表示一个拥有指定列且名为 my_table 的表:
然后代码通过将该 Table 对象传递到 TableCollection.create 方法在 my_db 数据库和 my_schema 架构中创建此表。
获取表详细信息¶
您可以通过调用 TableResource.fetch 方法来获取关于该表的信息,该方法会返回一个 Table 对象。
以下示例中的代码会获取有关名为 my_table 的表的信息:
创建或更改表¶
您可以设置 Table 对象的属性并将其传递给 TableResource.create_or_alter 方法以创建表(如果表不存在)或者根据表定义更改表(如果表存在)。create_or_alter 的行为旨在实现幂等性,这意味着无论在调用该方法之前表是否存在,生成的表对象都是一样的。
备注
对于您没有明确定义的任何 表 属性,create_or_alter 方法会使用默认值。例如,如果您没有设置 data_retention_time_in_days,则即使表以前以不同的值存在,其值也会默认为 None。
以下示例中的代码会将数据类型为 int 的新列 c3 追加到 my_table 表中,然后在 Snowflake 中更改该表:
列出表¶
您可以使用 iter 方法在指定架构中列出表,该方法会返回一个 Table 对象的 PagedIter 迭代器。
以下示例中的代码会列出名称以 my 开头的表:
交换表名称¶
您可以使用 TableResource.swap_with 方法在单个事务中将表名称与另一个表名称进行交换。有关更多信息,请参阅 ALTER TABLE 中的 SWAP WITH 参数说明。
以下示例中的代码可用于将同一数据库和架构中的 my_table 与 other_table 交换:
以下示例中的代码可用于将 my_table``(在 ``my_db 数据库和 my_schema 架构中)与 other_table``(在数据库和 ``other_schema 架构 other_db 中)交换:
执行表操作¶
您可以使用 TableResource 对象执行常见的表操作,例如管理表的 重聚类 以及删除或恢复表。
有关这些表操作的更多信息,请参阅 SQL 命令参考中的 表、视图、序列和用户定义类型命令。
为了演示可以对表资源执行的一些操作,以下示例中的代码会执行以下操作:
获取
my_db数据库和my_schema架构中的my_table表资源对象。暂停表的重聚类。
恢复表的重聚类。
删除表。
恢复已删除表的最新版本。
管理事件表¶
您可以管理 Snowflake 事件表,这是一种特殊的数据库表,具有一组预定义的列,Snowflake 可以在其中收集遥测数据。有关更多信息,请参阅 事件表概述。
Snowflake Python APIs 使用两种不同类型来表示事件表:
EventTable:显示事件表的属性,例如其名称、数据保留时间、最大数据扩展时间和更改跟踪选项。EventTableResource:显示可用于提取相应EventTable对象、重命名事件表,以及删除事件表的方法。
主题
创建事件表¶
要创建事件表,请先创建一个 EventTable 对象,然后根据 API Root 对象创建 EventTableCollection 对象。使用 EventTableCollection.create 将新事件表添加到 Snowflake。
以下示例中的代码会创建一个 EventTable 对象,表示一个拥有指定参数且名为 my_event_table 的事件表:
该代码会创建一个 EventTableCollection 变量 event_tables,并使用 EventTableCollection.create 在 Snowflake 中创建一个新事件表。
获取事件表详细信息¶
您可以通过调用 EventTableResource.fetch 方法来获取关于某个事件表的信息,该方法会返回一个 EventTable 对象。
以下示例中的代码会获取有关名为 my_event_table 的事件表的信息:
列出事件表¶
您可以使用 EventTableCollection.iter 方法列出事件表,该方法会返回 EventTable 对象的 PagedIter 迭代器。
以下示例中的代码会列出 my_db 数据库和 my_schema 架构中名称以 my 开头的事件表,并打印每个表的名称:
以下示例中的代码也会列出名称以 my 开头的事件表,但它使用的是 starts_with 参数而不是 like。此示例还设置了可选参数 show_limit=10,将结果数限制为 10:
执行事件表操作¶
您可以使用 EventTableResource 对象执行常见的事件表操作 – 例如重命名事件表和删除事件表。
为了演示您可以对事件表资源执行的操作,以下示例中的代码会执行以下操作:
获取
my_db数据库和my_schema架构中的my_event_table事件表资源对象。重命名事件表。
删除事件表。
管理视图¶
您可以在 Snowflake 中管理视图。视图是架构级对象,允许像访问表一样访问查询结果。当您创建或引用一个视图时,您是在其架构的上下文中执行此操作的。
备注
ALTER VIEW 目前不受支持。
Snowflake Python APIs 使用两种不同类型来表示视图:
View:显示视图的属性,例如其名称、列和 SQL 查询语句。ViewResource:显示可用于提取相应View对象和删除视图的方法。
主题
创建视图¶
要创建视图,请先创建一个指定视图名称、列和 SQL 查询语句的 View 对象。
以下示例中的代码会创建一个 View 对象,表示一个拥有指定列和 SQL 查询且名为 my_view 的视图:
然后代码通过将该 View 对象传递到 ViewCollection.create 方法在 my_db 数据库和 my_schema 架构中创建此视图。
获取视图详细信息¶
您可以通过调用 ViewResource.fetch 方法来获取关于某个视图的信息,该方法会返回一个 View 对象。
以下示例中的代码会获取表示 my_view 视图的 View 对象:
列表查看次数¶
您可以使用 iter 方法列出指定数据库中的视图。该方法会返回 View 对象的 PagedIter 迭代器。
以下示例中的代码会列出 my_db 数据库和 my_schema 架构中名称以 my 开头的视图:
以下示例中的代码也会列出名称以 my 开头的视图,但它使用的是 starts_with 参数而不是 like。此示例还设置了可选参数 show_limit=10,将结果数限制为 10:
删除视图¶
您可以使用 ViewResource.drop 方法删除视图。
以下示例中的代码会删除 my_view 视图: