Snowflake Python APIs: Managing Snowflake objects with Python¶
The Snowflake Python APIs package is a unified library that seamlessly connects Python with Snowflake workloads. It is intended to provide comprehensive APIs for interacting with Snowflake resources across data engineering, Snowpark, Snowpark ML, and application workloads using a first-class Python API.
You can use the Snowflake Python APIs to manage Snowflake resources by creating, dropping, or altering them, and more. You can use Python to perform tasks you might otherwise perform with Snowflake SQL commands.
The following diagram shows the high-level Snowflake Python APIs packaging structure:
To learn more about the API, including its general concepts and design patterns, see Snowflake Python APIs: General concepts.
Supported Snowflake resource objects¶
With the Snowflake Python APIs, you can currently manage the following Snowflake resource objects (minimum API version required in parentheses):
-
Accounts (0.13.0)
Managed accounts (0.13.0)
Alerts (0.13.0)
-
External volumes (0.13.0)
Pipes (0.13.0)
Stages (0.9.0)
Databases and database objects
Dynamic tables (0.10.0)
Event tables (0.13.0)
Views (0.13.0)
-
User-defined functions (UDFs) (0.13.0)
Stored procedures (0.13.0)
-
Catalog integrations (0.13.0)
Notification integrations (0.13.0)
Network policies (0.13.0)
Notebooks (0.13.0)
Streams (0.13.0)
-
Users (0.9.0)
Roles (0.9.0)
Database roles (0.13.1)
Access privileges (0.13.1)
Python ecosystem in Snowflake¶
The Snowflake Python APIs, the Snowpark API for Python, and the Snowflake Connector for Python are interfaces that each have distinct purposes in Snowflake. This section explains their differences and describes the typical use cases for each.
- Snowflake Python APIs
You can use this set of first-class Python APIs to define and manage core resources (such as tables, warehouses, and tasks) across Snowflake workloads. Unlike the Python Connector, these APIs interact with Snowflake using native Python without the need to use SQL.
The Snowflake Python APIs package unifies all Snowflake Python libraries (including
connector
,core
,snowpark
, andml
) so that you can simply start with the commandpip install snowflake
.Following the declarative programming approach, this API can be used as a DevOps tool to manage changes to your resources and automate code and infrastructure deployment in Snowflake.
- Snowpark
This set of libraries and code execution environments can run Python and other programming languages next to your data in Snowflake.
Libraries: With the Snowpark API, you can use Snowpark DataFrames in your code to query and transform data entirely within Snowflake. Snowpark applications process your data at scale directly on the Snowflake engine without moving the data to the system where your application code runs.
The Snowpark API is available in Python, Java, and Scala.
Code execution environments: Snowpark runtime environments support container images and Python, Java, and Scala code.
You can execute custom Python code through Python user-defined functions (UDFs) or stored procedures for building data pipelines, apps, and more. Python runtime environments have access to a package repository and package manager from Anaconda.
Runtime environments are also available in Scala and Java.
You can run containerized applications directly within Snowflake using Snowpark Container Services.
- Snowflake Connector for Python
Use this SQL driver to connect to Snowflake, execute SQL statements, and then get the results using a Python client.
With the Python Connector, you write all of your interactions with Snowflake using SQL statement strings.
Get started with the Snowflake Python APIs¶
To get started with the Snowflake Python APIs, see the instructions in the following topics:
For tutorials on getting started with the Snowflake Python APIs, see Tutorials: Getting started with the Snowflake Python APIs.
Supported Python versions¶
The supported versions of Python are:
3.9
3.10
3.11
3.12
Developer guides¶
Guide |
Description |
---|---|
Install the Snowflake Python APIs package. |
|
Connect to Snowflake from Python code. |
|
Managing Snowflake accounts and managed accounts with Python |
Use the API to create and manage accounts and managed accounts. |
Use the API to create and manage alerts. |
|
Use the API to create and manage data loading and unloading resources, including external volumes, pipes, and stages. |
|
Managing Snowflake databases, schemas, tables, and views with Python |
Use the API to create and manage databases, schemas, and tables. |
Use the API to create and manage dynamic tables. |
|
Managing Snowflake functions and stored procedures with Python |
Use the API to create and manage user-defined functions (UDFs) and stored procedures. |
Use the API to create and manage catalog integrations and notification integrations. |
|
Use the API to create and manage network policies. |
|
Use the API to create and manage Snowflake Notebooks. |
|
Managing Snowpark Container Services (including service functions) with Python |
Use the API to manage components of Snowpark Container Services, including compute pools, image repositories, services, and service functions. |
Use the API to create and manage streams. |
|
Use the API to create, execute, and manage tasks and task graphs. |
|
Use the API to create and manage users, roles, and grants. |
|
Use the API to create and manage virtual warehouses. |
References¶
Costs of Snowflake access¶
To reduce costs—–for both usage credit and network activity—–the Snowflake Python APIs are designed to communicate with Snowflake only when you call methods designed to synchronize with Snowflake.
Objects in the API are either local references (or handles) or snapshots of state stored on Snowflake. In general, when you process information that was retrieved from Snowflake, you do so through a local, in-memory reference object.
These references do not synchronize with Snowflake until you call a method. When you call a method, you are usually incurring costs in both usage credit and network activity. In contrast, when you work with in-memory references, such as when accessing attributes, your work is performed locally and incurs no such costs.