Home

Awesome

<h1 align="center"> <strong>data load tool (dlt) — the open-source Python library for data loading</strong> </h1> <p align="center"> Be it a Google Colab notebook, AWS Lambda function, an Airflow DAG, your local laptop,<br/>or a GPT-4 assisted development playground—<strong>dlt</strong> can be dropped in anywhere. </p> <h3 align="center">

🚀 Join our thriving community of likeminded developers and build the future together!

</h3> <div align="center"> <a target="_blank" href="https://dlthub.com/community" style="background:none"> <img src="https://img.shields.io/badge/slack-join-dlt.svg?labelColor=191937&color=6F6FF7&logo=slack" style="width: 260px;" /> </a> </div> <div align="center"> <a target="_blank" href="https://pypi.org/project/dlt/" style="background:none"> <img src="https://img.shields.io/pypi/v/dlt?labelColor=191937&color=6F6FF7"> </a> <a target="_blank" href="https://pypi.org/project/dlt/" style="background:none"> <img src="https://img.shields.io/pypi/pyversions/dlt?labelColor=191937&color=6F6FF7"> </a> </div>

Installation

dlt supports Python 3.8+.

pip install dlt

More options: Install via Conda or Pixi

Quick Start

Load chess game data from chess.com API and save it in DuckDB:

import dlt
from dlt.sources.helpers import requests

# Create a dlt pipeline that will load
# chess player data to the DuckDB destination
pipeline = dlt.pipeline(
    pipeline_name='chess_pipeline',
    destination='duckdb',
    dataset_name='player_data'
)

# Grab some player data from Chess.com API
data = []
for player in ['magnuscarlsen', 'rpragchess']:
    response = requests.get(f'https://api.chess.com/pub/player/{player}')
    response.raise_for_status()
    data.append(response.json())

# Extract, normalize, and load the data
pipeline.run(data, table_name='player')

Try it out in our Colab Demo

Features

Ready to use Sources and Destinations

Explore ready to use sources (e.g. Google Sheets) in the Verified Sources docs and supported destinations (e.g. DuckDB) in the Destinations docs.

Documentation

For detailed usage and configuration, please refer to the official documentation.

Examples

You can find examples for various use cases in the examples folder.

Adding as dependency

dlt follows the semantic versioning with the MAJOR.MINOR.PATCH pattern.

We suggest that you allow only patch level updates automatically:

Get Involved

The dlt project is quickly growing, and we're excited to have you join our community! Here's how you can get involved:

License

dlt is released under the Apache 2.0 License.