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.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.8.1-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| snowpipe_streaming-1.8.1-cp39-abi3-manylinux_2_26_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.26+ ARM64 | Details |
| snowpipe_streaming-1.8.1-cp39-abi3-manylinux_2_24_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.24+ x86-64 | Details |
| snowpipe_streaming-1.8.1-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.1-cp39-abi3-win_amd64.whl
| Download URL | snowpipe_streaming-1.8.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 |
0158be5ce995e74dadcb1cb8547e8ffd1014d5041a210227a2c2477a2612c6cc
|
|
BLAKE2b-256 checksum How to use checksums |
64010deda4cb6227728c80b81b6835b26a8a6d8db0dc1c20f5e17abab5bd9384
|
| 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.1-cp39-abi3-manylinux_2_26_aarch64.whl
| Download URL | snowpipe_streaming-1.8.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 |
f83b6d242aca918dfb155b740b36ec22d6655322a00c630eee226a090e8b3ac0
|
|
BLAKE2b-256 checksum How to use checksums |
b9b519d81eb52294f62835b7b6e139ef9866a7a2cc24c5f64dc967ec7cd4383e
|
| 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.1-cp39-abi3-manylinux_2_24_x86_64.whl
| Download URL | snowpipe_streaming-1.8.1-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 |
c0eb65d03ed92149b2ddb530f428ad519ab78d04fa4539ecc474e3c02a032c21
|
|
BLAKE2b-256 checksum How to use checksums |
b8c7cc24ab91232cd1066af14f603fdda16778285df73f3300ea8221d5be2b43
|
| 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.1-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | snowpipe_streaming-1.8.1-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 |
9352fc5cb61e8b0b62337406809a1a9988c32c0a0eb2dd53135df67995552240
|
|
BLAKE2b-256 checksum How to use checksums |
412bcbeb149d5b7b5e6a27163a622b5457e337af78fbf0f38a236a5607fc85c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|