Skip to main content

csvql-query

CI License: MIT PyPI

Query CSV files with SQL from Python — powered by a Zig/SIMD engine.

Zero-copy mmap reads + SIMD parsing happen before Python ever sees the data. Faster than DuckDB on typical workloads, no dependencies required.

Installation

pip install csvql-query

Quick Start

import csvql

# Returns a list of dicts (like csv.DictReader, but with SQL)
rows = csvql.query("SELECT name, salary FROM 'employees.csv' WHERE salary > 100000 ORDER BY salary DESC")
# [{'name': 'Alice', 'salary': '185000'}, ...]

# Raw CSV string
csv_str = csvql.query_csv("SELECT * FROM 'data.csv' LIMIT 10")

# pandas DataFrame (pandas must be installed)
df = csvql.query_df("SELECT category, COUNT(*) as n FROM 'sales.csv' GROUP BY category")

# (headers, rows) tuples — no dependencies
headers, rows = csvql.query_tuples("SELECT name, age FROM 'users.csv' WHERE age > 25")

API

Function Returns Description
query(sql) list[dict] Execute SQL, get list of dicts
query_csv(sql) str Execute SQL, get raw CSV string
query_df(sql) DataFrame Execute SQL, get pandas DataFrame
query_tuples(sql) (list[str], list[tuple]) Execute SQL, get (headers, rows)

SQL Support

The SQL path is embedded in the query string (same as the CLI):

# Filtering, ordering, limiting
csvql.query("SELECT name, city FROM 'data.csv' WHERE age > 30 ORDER BY name LIMIT 5")

# Aggregation
csvql.query("SELECT department, AVG(salary) FROM 'emp.csv' GROUP BY department")

# Unix pipes — use '-' as the filename
import subprocess, sys
# or just pass stdin data via the engine directly

Full SQL reference: SIMPLE_QUERY_LANGUAGE.md

Performance

  • mmap + SIMD parsing — data is never copied into Python memory
  • Parallel chunk processing on multi-core machines
  • Typically 5–9x faster than DuckDB on 1M-row CSVs

Requirements

  • Python ≥ 3.10
  • macOS (x86_64 / arm64) or Linux (x86_64)
  • pandas optional — only needed for query_df()

Metadata

Release files for csvql-query 2.9.0

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

Built distributions (wheels)

Table of built distributions (wheels) for csvql-query 2.9.0
File
csvql_query-2.9.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
csvql_query-2.9.0-py3-none-manylinux_2_17_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
csvql_query-2.9.0-py3-none-manylinux_2_17_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
csvql_query-2.9.0-py3-none-macosx_12_0_x86_64.whl Python 3 none macOS 12.0+ x86-64 Details
csvql_query-2.9.0-py3-none-macosx_12_0_arm64.whl Python 3 none macOS 12.0+ ARM64 Details

Total release size: 4.4 MB

Release files / csvql_query-2.9.0-py3-none-win_amd64.whl

Download URL csvql_query-2.9.0-py3-none-win_amd64.whl
Size 538.2 kB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
bca4be4c90f77da8b7577fcd30199b636fc51a3698d8cbf1ef9f9db54005a102
BLAKE2b-256 checksum
How to use checksums
8ddb3a4070b68f243aaa1ef7e996428ecbd3976092ff86775877a413ce299750
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / csvql_query-2.9.0-py3-none-manylinux_2_17_x86_64.whl

Download URL csvql_query-2.9.0-py3-none-manylinux_2_17_x86_64.whl
Size 1.7 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
2fca6df2c8aa5b8a0794e8b3808ca0acd85d9daf91efacedfb19e5da6251a605
BLAKE2b-256 checksum
How to use checksums
a70b217912628ddcc03615d3becbe8dfe21369b0a9b23391799a9cb8bdc85553
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / csvql_query-2.9.0-py3-none-manylinux_2_17_aarch64.whl

Download URL csvql_query-2.9.0-py3-none-manylinux_2_17_aarch64.whl
Size 1.4 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
40601a7f2160f5a61fabac481df72589eec36c229c09357cc2041a088e292a41
BLAKE2b-256 checksum
How to use checksums
d3bdf3884ad2049c479f144514f5c42ac6b47c75718fdba7605d6a3e37d394a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / csvql_query-2.9.0-py3-none-macosx_12_0_x86_64.whl

Download URL csvql_query-2.9.0-py3-none-macosx_12_0_x86_64.whl
Size 374.1 kB
Tags Python 3 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
8e5ab6c75041b64fc4b8fd613e8be305bf8d370d6fb85d23577b43fa4784c156
BLAKE2b-256 checksum
How to use checksums
c1cf14525cab8a74c9cdb6a38c8d31f0b8057eb1096140c8bb67228ef2511e3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / csvql_query-2.9.0-py3-none-macosx_12_0_arm64.whl

Download URL csvql_query-2.9.0-py3-none-macosx_12_0_arm64.whl
Size 374.1 kB
Tags Python 3 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
d183357e2a1af0a8deef3e670bb6f4fd851ba3632e4376f9a129762a6728bc5b
BLAKE2b-256 checksum
How to use checksums
50e05e25aa025871b9b3ad090983a63b876d94a8bd2b93d9ee8f00eef44da44b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

2.9.0 This release

5 release files

2.8.1

5 release files

2.8.0

5 release files

2.7.0

5 release files

2.6.3

5 release files

2.6.2

5 release files

2.6.0

3 release files

2.5.0

3 release files

2.4.3

3 release files

2.4.1

3 release files

2.4.0

3 release files

2.3.0

3 release files

2.2.0

3 release files

2.1.1

3 release files

2.1.0

3 release files

2.0.4

3 release files

2.0.3

3 release files

2.0.2

3 release files

2.0.1

3 release files

2.0.0

3 release files

1.9.0

3 release files

1.8.0

3 release files

1.7.2

3 release files

1.7.1

3 release files

1.7.0

3 release files

1.6.1

3 release files

1.6.0

3 release files

1.5.13

3 release files

1.5.12

3 release files

1.5.11

3 release files

1.5.10

3 release files

1.5.9

3 release files

1.5.8

3 release files

1.5.7

3 release files

1.5.6

3 release files

1.5.5

3 release files

1.5.1

3 release files

1.5.0

3 release files

1.4.0

3 release files

1.3.0

3 release files

1.1.1

3 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