Skip to main content

Qck 🦆👩‍💻

Qck (pronounced "quack") is a CLI script to conveniently run DuckDB SQL scripts with support for Jinja templating.

🛠️ Installation

Use pip install qck to install. This will make available the qck command-line tool.

🚀 Usage

Command Line Interface

The basic usage is to run a SQL file and display results in the terminal:

qck myquery.sql

Key command line options:

  • --limit N: Limit output to N rows (default: 99 rows)
  • --to-parquet FILE: Save results to a Parquet file
  • --to-csv FILE: Save results to a CSV file
  • --interactive: Open Python shell with query results
  • --verbose, -v: Print the generated SQL query
  • args: Pass template parameters as key=value pairs

Examples:

# Limit output to 10 rows
qck myquery.sql --limit 10

# Save to Parquet with verbose output
qck myquery.sql --to-parquet results.parquet -v

# Pass template parameters
qck template.sql date=2024-01-01 region=EU

# Interactive mode
qck myquery.sql --interactive

# Pipe SQL from stdin (use - as filename)
echo "SELECT 42 as answer" | qck -

# With template parameters from stdin
echo "SELECT '{{ name }}' as greeting" | qck - name=World

Python API

You can use Qck programmatically in Python:

from qck import qck

# Basic query execution
rs = qck("myquery.sql")

# With template parameters
rs = qck("template.sql", params={"date": "2024-01-01"})

# Control output limit
rs = qck("myquery.sql", limit=1000)

# Print generated SQL
rs = qck("myquery.sql", print_query=True)

# Access results as pandas DataFrame
df = rs.df()

🖋️ Templating

Qck uses Jinja2 for SQL templating with some special features:

  1. Parameter substitution:
SELECT *
FROM orders
WHERE date = '{{ date }}'
  1. Python function imports:
-- Use the special 'import' variable to access Python functions
{% set files = import('glob.glob')('data/*.parquet') %}
{% for file in files %}
SELECT * FROM read_parquet('{{ file }}')
{% if not loop.last %}UNION ALL{% endif %}
{% endfor %}
  1. Control structures:
SELECT
    customer_id,
    {% if include_details %}
    first_name,
    last_name,
    email,
    {% endif %}
    total_orders
FROM customers
  1. Custom Python functions:
-- Import and use your own functions
{% set helper = import('mymodule.helpers:format_date') %}
SELECT *
FROM events
WHERE date = '{{ helper(date) }}'

The import variable allows importing any Python module or function using:

  • Module syntax: import('module_name')
  • Function syntax: import('module:function')
  • Nested syntax: import('module.submodule:function')

🧪 Testing

To run the test suite:

# Install development dependencies
pip install -e .
pip install pytest

# Run tests
pytest test_qck.py -v

Metadata

Release files for qck 2025.8.28

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qck 2025.8.28
File Size Uploaded
qck-2025.8.28.tar.gz 5.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qck 2025.8.28
File Interpreter ABI Platform
qck-2025.8.28-py3-none-any.whl Python 3 none any Details

Total release size: 11.1 kB

Release files / qck-2025.8.28.tar.gz

Download URL qck-2025.8.28.tar.gz
Size 5.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a77c76f6511208df5e7deae617084ef2587a4671a876deef84547eca0e19fc53
BLAKE2b-256 checksum
How to use checksums
eee34d5294504439c49b736828918b30a35672592cd34c07356f63552d1cb5fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / qck-2025.8.28-py3-none-any.whl

Download URL qck-2025.8.28-py3-none-any.whl
Size 5.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
031f3c77e8e133fa543b4821595faa2bcda484d86558e19e1b437838db9bfb94
BLAKE2b-256 checksum
How to use checksums
82cf7a5cc17f333f1f5704698303cc4ad9fea8663af1a97e448e25b39f427f21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

2025.8.28 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page