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.8.0
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.8.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| snowpipe_streaming-1.8.0-cp39-abi3-manylinux_2_26_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.26+ ARM64 | Details |
| snowpipe_streaming-1.8.0-cp39-abi3-manylinux_2_24_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.24+ x86-64 | Details |
| snowpipe_streaming-1.8.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 41.6 MB
Release files / snowpipe_streaming-1.8.0-cp39-abi3-win_amd64.whl
| Download URL | snowpipe_streaming-1.8.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 9.0 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fc029099054d356275b3298c6596514bfb91005f67cff28c6b2d39a68e2d61ee
|
|
BLAKE2b-256 checksum How to use checksums |
796c35afdcac2fdf5b1d9410c00a1f0dea0eb6929ed8fd20a4e164cfaa56a9db
|
| 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.8.0-cp39-abi3-manylinux_2_26_aarch64.whl
| Download URL | snowpipe_streaming-1.8.0-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 |
963edfaa6faf701849117243ebe0dce54fb5246c28e48d480f5e6b13f96bc6d2
|
|
BLAKE2b-256 checksum How to use checksums |
4f5bf13356611cdaadaf9b3cfbf0b4708c43ecf30b927f1385a8a9954e9bfa31
|
| 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.8.0-cp39-abi3-manylinux_2_24_x86_64.whl
| Download URL | snowpipe_streaming-1.8.0-cp39-abi3-manylinux_2_24_x86_64.whl |
|---|---|
| Size | 11.5 MB |
| Tags | CPython 3.9 Linux glibc 2.24+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
aade07bc1c21ffe5cd7c47c7205fcd1ebfe03627de6f5361bb0ae824516e91f4
|
|
BLAKE2b-256 checksum How to use checksums |
7eb82a9176225af63ff2bed06108d2f0f5797e5927b9a536196dac642d9eb726
|
| 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.8.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | snowpipe_streaming-1.8.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 9.9 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ee89f3f5589698e39acef8a0acdf7aae1b0cf284aa018e0800248e0e4b846c36
|
|
BLAKE2b-256 checksum How to use checksums |
9def9f8f91804501b34cc7f0f859a34056fb2d9e2a6b8b1e1cd4468fcca5347a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|