skillfed

sling

Slings data from a source to a target

sling v1.5.24 126.3K downloads/30d#11,783 on PyPI71
License unclear Active released

What it is and what it does

Sling is a Python-based ETL/ELT tool that moves data between databases, files, and in-memory Python structures. It provides both a command-line interface and a Python API (Replication and Sling classes) for defining and running data transfer tasks. The package handles schema mapping, mode selection (full-refresh or incremental), and can stream data from sources like PostgreSQL, Snowflake, or CSV files to targets like databases or local files.

The tool supports multiple usage patterns: CLI-based configuration via YAML, programmatic replication definitions, and direct streaming for memory-efficient processing of large datasets. It can ingest pandas or polars DataFrames, lists of dictionaries, or generator functions as input, and offers both standard streaming (via stream()) and high-performance Arrow-based streaming (via stream_arrow()) for type-preserving data transfer. Connection management is handled through environment variables or direct parameters.

Use it for:

  • Migrate tables from PostgreSQL to Snowflake or other data warehouses with full-refresh or incremental modes.
  • Load CSV or JSON files into a database, preserving data types when using Arrow format.
  • Stream large datasets from a database to files or another system without loading everything into memory.
  • Programmatically replicate multiple database schemas with templated naming and custom transformations.
  • Export pandas or polars DataFrames to databases or files as part of a Python data pipeline.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Sling moves data between databases, files, and Python data structures using a command-line tool or Python API, supporting extract-load workflows with multiple source and target connectors.

Yes, if you need straightforward data movement between databases and files. The package is actively maintained, has no security vulnerabilities, and installs cleanly. However, verify the license status before production use—the metadata shows no SPDX identifier or license text, which is a red flag for compliance-sensitive projects. The API is well-documented in the description, and the low install friction makes it a reasonable choice for ETL/ELT tasks.

Install

sling on PyPI

pip

pip install sling

uv

uv add sling

poetry

poetry add sling

Installing sling

Before you install

Installs cleanly with no runtime dependencies. The package is actively maintained with a recent release (5 days old) and steady development activity.

License in practice

License status is unclear—no SPDX identifier or raw license text is available in the package metadata. Verify the actual license before using in production or proprietary work.

Quickstart

pip install sling

from sling import Sling, Mode
import os

os.environ["POSTGRES"] = 'postgres://...'
os.environ["SNOWFLAKE"] = 'snowflake://...'

Sling(
    src_conn="postgres",
    src_stream="public.users",
    tgt_conn="snowflake",
    tgt_object="public.users_copy",
    mode=Mode.FULL_REFRESH
).run()

Requires Python >=3.9. Connection strings for source and target systems must be set as environment variables or passed directly.

Verify before relying

  • Whether the unclear license is a metadata issue or an actual licensing concern requiring legal review.
  • Performance characteristics and scalability limits for large datasets or high-frequency replication.
  • Which database systems and file formats are actually supported beyond the examples shown.

Package facts

License not declared (unclear)
Python support supports the current Python release (>=3.9)
Install friction low — pure-Python wheel
Runtime dependencies none
Maintenance actively maintained — 5 days since the last release
Last repo commit
First released
Downloads 126,262/month — #11,783 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: sling-1.5.24-py3-none-any.whl

Keywords: sling, etl, elt, extract, load

Intended Audience :: DevelopersIntended Audience :: EducationIntended Audience :: Science/ResearchOperating System :: MacOSOperating System :: UnixProgramming Language :: Python :: 3Topic :: Utilities

Tags

database to database transferetl extract load tooldata pipeline streamingcsv database import exportdata replication toolbulk data loadingelt data movement
etl-eltdata-pipelinestreaming

More Utilities packages