Skip to main content

Fast CSV querying from Python — powered by a Zig/SIMD engine

Project description

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()

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

csvql_query-1.5.5-py3-none-manylinux_2_17_x86_64.whl (1.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

csvql_query-1.5.5-py3-none-macosx_12_0_x86_64.whl (353.0 kB view details)

Uploaded Python 3macOS 12.0+ x86-64

csvql_query-1.5.5-py3-none-macosx_12_0_arm64.whl (353.0 kB view details)

Uploaded Python 3macOS 12.0+ ARM64

File details

Details for the file csvql_query-1.5.5-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for csvql_query-1.5.5-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c43d09d15483bd23176fb06080da1f33c1fd7147e1cba35d3801ee7d2e1813f2
MD5 07a51e1eb07f9c50908501ac472c5298
BLAKE2b-256 d8619da5d98910e8eb14db04ce8fb4e295eefb61fe7adc6fb28944d1f965a2be

See more details on using hashes here.

File details

Details for the file csvql_query-1.5.5-py3-none-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for csvql_query-1.5.5-py3-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 a36ff59bf42e20e1f112b41de599dc9b571baab6f20d01832621b3a8f54ded68
MD5 84185a7dbe274a1e757fd14831b6fc2d
BLAKE2b-256 022cfcaa49826c80853a765aef03770c29ffb51288794cbe151fbcdda837c92f

See more details on using hashes here.

File details

Details for the file csvql_query-1.5.5-py3-none-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for csvql_query-1.5.5-py3-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 976e20848e19021955fcbea824c2364fdd94eba4b779a8826c940db7226c8ade
MD5 c37d80f4511d50f52a761e5b7838c018
BLAKE2b-256 30dcd6e15afece6f7edbb62410a2aa1faf8b4a9b7c782fd93a8398f32e523517

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page