Snowflake Streaming Ingest Python SDK
A high-performance Python SDK for streaming data ingestion into Snowflake, built with Rust for optimal performance and reliability.
Overview
The Snowflake Streaming Ingest Python SDK provides a Python interface for real-time data streaming into Snowflake tables. It leverages a Rust core for high performance while providing a familiar Python API for easy integration.
Supported Platforms
Operating Systems
- Linux: x86_64, aarch64
- macOS: arm64 (Apple Silicon)
- Windows: x86_64
Python Versions
- Python 3.9 (minimum required)
- Python 3.10
- Python 3.11
- Python 3.12
- Python 3.13
Minimum System Requirements
Linux
- glibc: 2.26 or higher
- Architecture: x86_64, aarch64
macOS
- Version: macOS 11.0 (Big Sur) or higher
- Architecture: Apple Silicon (arm64)
Windows
- Version: Windows 10 or higher
- Architecture: x86_64
Installation
From PyPI (Recommended)
pip install snowpipe-streaming
Quick Start
from snowflake.ingest.streaming import StreamingIngestClient
# Create a client
client = StreamingIngestClient(
client_name="my_client",
db_name="my_database",
schema_name="my_schema",
pipe_name="my_pipe",
properties={
"account": "your_account",
"user": "your_user",
"private_key": "your_private_key",
"url": "https://your_account.snowflakecomputing.com"
}
)
# Open a channel
channel, status = client.open_channel("my_channel")
# Insert data
row_data = {
"id": 1,
"name": "John Doe",
"timestamp": "2024-01-01T00:00:00Z"
}
channel.append_row(row_data)
# Close resources
channel.close()
client.close()
Features
- High Performance: Rust-based core for optimal throughput and low latency
- Memory Efficient: Minimal memory footprint with efficient data handling
- Type Safety: Strong typing support with Python type hints
- Automatic Retries: Built-in retry logic for transient failures
- Backpressure Handling: Intelligent backpressure management
- Comprehensive Logging: Detailed logging for debugging and monitoring
- Cross-Platform: Native support for Linux, macOS, and Windows
Architecture
The SDK uses a hybrid Rust-Python architecture:
- Rust Core: High-performance data processing, networking, and Snowflake communication
- Python Bindings: Pythonic API using PyO3 for seamless integration
- Stable ABI: Uses Python's stable ABI (abi3) for forward compatibility
Dependencies
Core Dependencies
- msgspec: Fast JSON serialization/deserialization
- Native Extensions: Rust-based binary modules (automatically included)
Build Dependencies (for development)
- maturin: Rust-Python build tool
- pytest: Testing framework
- Rust toolchain: Required for building from source
Support
- Documentation: Snowflake Documentation
- Issues: GitHub Issues
- Community: Snowflake Community
License
This project is licensed under the Apache License 2.0. See LICENSE-2.0.txt for details.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
python -m pytest tests/ - Submit a pull request
For more details, see the main repository's contribution guidelines.
Release files for snowpipe-streaming 1.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| snowpipe_streaming-1.7.1-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| snowpipe_streaming-1.7.1-cp39-abi3-manylinux_2_26_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.26+ ARM64 | Details |
| snowpipe_streaming-1.7.1-cp39-abi3-manylinux_2_24_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.24+ x86-64 | Details |
| snowpipe_streaming-1.7.1-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 41.4 MB
Release files / snowpipe_streaming-1.7.1-cp39-abi3-win_amd64.whl
| Download URL | snowpipe_streaming-1.7.1-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
cb214844f6de68d93ad9b36b7b5a8d75824bb204ec5063edc1a5fe051199a4fe
|
|
BLAKE2b-256 checksum How to use checksums |
2f7beb4a77799245ee6e8294af6defd5651e359c5e93d776a1cc7166fdcbe7f2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|
Release files / snowpipe_streaming-1.7.1-cp39-abi3-manylinux_2_26_aarch64.whl
| Download URL | snowpipe_streaming-1.7.1-cp39-abi3-manylinux_2_26_aarch64.whl |
|---|---|
| Size | 11.2 MB |
| Tags | CPython 3.9 Linux glibc 2.26+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
7a42cf8708da330bb1906c09978d353ffc6c29fcdbd8cc6ed46cbb98130d96af
|
|
BLAKE2b-256 checksum How to use checksums |
3de32f4f77597eb44e096d74d149f5d4f99684bb2f1219a39cd987d857e7ebf7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|
Release files / snowpipe_streaming-1.7.1-cp39-abi3-manylinux_2_24_x86_64.whl
| Download URL | snowpipe_streaming-1.7.1-cp39-abi3-manylinux_2_24_x86_64.whl |
|---|---|
| Size | 11.4 MB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7cda5d038eab7f9a40b39f32dec8f47e62b777686418d3127fb6882afff0a7ab
|
|
BLAKE2b-256 checksum How to use checksums |
4d8a662209abd85aed4d3e3554a6ec8a0ab22c64cdde1163e3437c0d165d18ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|
Release files / snowpipe_streaming-1.7.1-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | snowpipe_streaming-1.7.1-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 9.8 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b321d8c3933d18ab32e19dea6e5a1fbf2d01635e06f2151e8384ad3f2d4becfb
|
|
BLAKE2b-256 checksum How to use checksums |
bdd4e981853f9828d7d5addbe73219114498104fe76e673e1443d65c3de37593
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|