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.
Metadata
Release files for snowpipe-streaming 1.9.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.9.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| snowpipe_streaming-1.9.0-cp39-abi3-manylinux_2_26_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.26+ ARM64 | Details |
| snowpipe_streaming-1.9.0-cp39-abi3-manylinux_2_24_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.24+ x86-64 | Details |
| snowpipe_streaming-1.9.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.9.0-cp39-abi3-win_amd64.whl
| Download URL | snowpipe_streaming-1.9.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 |
3a3ce3d5e7e932b60ba9d593514bec6f4e455f51f7bba8e709d03cb262f9e7e5
|
|
BLAKE2b-256 checksum How to use checksums |
829499ac8fcc65f14456199934646cb73b1c09a054ecb3a2072bd3982dd78982
|
| 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.9.0-cp39-abi3-manylinux_2_26_aarch64.whl
| Download URL | snowpipe_streaming-1.9.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 |
30dc3c0fdced6832edb7f90844df6464a0a7742253c13fa8d6c213e71bfdeab9
|
|
BLAKE2b-256 checksum How to use checksums |
9afe522f4fa0150c30d8e46175d244f359613d009d73ed812aba9f0ee2901cb6
|
| 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.9.0-cp39-abi3-manylinux_2_24_x86_64.whl
| Download URL | snowpipe_streaming-1.9.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 |
a3034969daf0baab3b79d9a4d65a859a33b2caff70e7cbdd95f826a1e8ff6096
|
|
BLAKE2b-256 checksum How to use checksums |
780b2db9586903eb02f0408ceedbcae7054953003af9f8485637fb0405705034
|
| 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.9.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | snowpipe_streaming-1.9.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 |
58ef7c46ed0d013aa19da03f528a922e1af6a99110c762c0312fc3e453a62958
|
|
BLAKE2b-256 checksum How to use checksums |
9d9b08613c5f863e5fef5d76c3a77ec44a21e23b259307689c1f7b0d20e17c36
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.8
|