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.11-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.11-py3-none-macosx_12_0_x86_64.whl (353.0 kB view details)

Uploaded Python 3macOS 12.0+ x86-64

csvql_query-1.5.11-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.11-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for csvql_query-1.5.11-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5afae04349ac1e5ac5550a5d7c1e7fdf18de79793ea6774d8cd588eed492b6d6
MD5 b759d64e75d4edaed27a4bc1a347c483
BLAKE2b-256 6ed83405ecb4ea2564e1a15bf42b55d23d89c3a66708ccf1dd0456c1418441d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csvql_query-1.5.11-py3-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 4d4436b4fc5caf601523e63540565759e2169fbda3a23d22342a8d1b69452e16
MD5 4ffafcc41cbb00c6433a1d30cb15af74
BLAKE2b-256 653134a07058fac16cfc583fac4f28d9395dce4a146c4b26d4bf7bdc52c2cd9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csvql_query-1.5.11-py3-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 8590511856997e8121ee22cd1e57b7fcf2630212520e4af73ef61669589eebd4
MD5 fe45027380e139c03783ef62fe5f2c11
BLAKE2b-256 64ecd47662ff220dad98d66fb976ae4832bded8f4b716a3e21d63450f1eaf0f4

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