{"library":"sling","title":"Sling","description":"Sling is a modern ELT (Extract, Load, Transform) data movement tool that allows users to rapidly move data between various databases, data warehouses, and cloud services using a simple Python API or CLI. It supports a wide range of connectors and focuses on ease of use and high performance. The current version is 1.5.15, with a rapid release cadence (multiple updates per month).","language":"python","status":"active","last_verified":"Mon May 18","install":{"commands":["pip install sling","pip install sling[snowflake,postgres]"],"cli":{"name":"sling","version":"Version: 1.5.18"}},"imports":["from sling import Connection","from sling import Source","from sling import Target","from sling import run"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom sling import Connection, Source, Target, run\n\n# Configure connections using environment variables for sensitive data\n# For a real run, ensure these environment variables are set:\n# SLING_PG_HOST, SLING_PG_USER, SLING_PG_PASS, SLING_PG_DB\n# SLING_SNF_ACCOUNT, SLING_SNF_USER, SLING_SNF_PASS, SLING_SNF_DB, SLING_SNF_WAREHOUSE\n\npostgres_conn = Connection(\n    name='my_postgres',\n    type='postgres',\n    host=os.environ.get('SLING_PG_HOST', 'localhost'),\n    port=5432,\n    user=os.environ.get('SLING_PG_USER', 'user'),\n    password=os.environ.get('SLING_PG_PASS', 'password'),\n    database=os.environ.get('SLING_PG_DB', 'source_db')\n)\n\nsnowflake_conn = Connection(\n    name='my_snowflake',\n    type='snowflake',\n    account=os.environ.get('SLING_SNF_ACCOUNT', 'your_account'),\n    user=os.environ.get('SLING_SNF_USER', 'user'),\n    password=os.environ.get('SLING_SNF_PASS', 'password'),\n    database=os.environ.get('SLING_SNF_DB', 'target_db'),\n    warehouse=os.environ.get('SLING_SNF_WAREHOUSE', 'COMPUTE_WH')\n)\n\n# Define source and target for a simple table copy\nsource_table = Source(\n    connection=postgres_conn,\n    object='public.my_source_table'\n)\n\ntarget_table = Target(\n    connection=snowflake_conn,\n    object='public.my_target_table',\n    mode='full_refresh' # or 'append', 'incremental'\n)\n\n# Run the data sling job\ntry:\n    result = run(source_table, target_table)\n    print(f\"Sling job completed. Rows replicated: {result.rows_replicated}\")\nexcept Exception as e:\n    print(f\"Sling job failed: {e}\")\n\n# Example of retrieving connection by name if already added to a global registry (e.g., via CLI or config file)\n# connection = Connection.get_connection('my_postgres')\n","lang":"python","description":"This quickstart demonstrates how to define a PostgreSQL source and a Snowflake target, then execute a data movement job. It uses environment variables for sensitive connection details, which is a recommended practice. Ensure you have the necessary `sling` extras installed (e.g., `sling[postgres,snowflake]`) and your environment variables configured for a successful run.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-18","installed_version":"1.5.18","pypi_latest":"1.5.18","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":1.6,"avg_import_s":3.79,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.78,"mem_mb":124,"disk_size":"18.0M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.82,"mem_mb":124,"disk_size":"18.0M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":3.23,"mem_mb":124,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":3.13,"mem_mb":124,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.98,"mem_mb":124.8,"disk_size":"19.9M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":5.01,"mem_mb":124.8,"disk_size":"19.9M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":3.97,"mem_mb":124.8,"disk_size":"20M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":3.69,"mem_mb":124.8,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.42,"mem_mb":125.2,"disk_size":"11.8M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.41,"mem_mb":125.2,"disk_size":"11.8M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.6,"import_time_s":3.43,"mem_mb":125.2,"disk_size":"12M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.4,"import_time_s":3.29,"mem_mb":125.2,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.29,"mem_mb":125.5,"disk_size":"11.5M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":3.33,"mem_mb":125.5,"disk_size":"11.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":3.35,"mem_mb":125.5,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":3.38,"mem_mb":125.5,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.43,"mem_mb":187.8,"disk_size":"17.5M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":4.37,"mem_mb":187.8,"disk_size":"17.5M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"sling","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":3.14,"mem_mb":187.8,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"snowflake,postgres","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":3.37,"mem_mb":187.8,"disk_size":"18M"}]}}