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

Uploaded Python 3macOS 12.0+ x86-64

csvql_query-1.5.9-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.9-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for csvql_query-1.5.9-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3dabfe78d3c3b0eaf6f23dc8ac1b43275a30c3c5b440ed146fc41adcdb324120
MD5 0783c006bf74fab4eb6ec119e39fb9d7
BLAKE2b-256 703258436013da34c008c3618f2607d86046e44d9f719daa225ca29699bb13ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csvql_query-1.5.9-py3-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 0fc5e75594aab93c605e38cc57440a2dadae64e30eb3993dabd0a0d74ab4d5cd
MD5 50181d4514b21c068701bf8136819513
BLAKE2b-256 438d2da81886f7a03bfe3e696e3ab1f8629e4b5ec6e190b9febcc735b3ee1af8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csvql_query-1.5.9-py3-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 0346814656ce0283e8e0cbf0fdeb08ee2f5492cde63d212a5eb891cc8c7198cb
MD5 14b0870756291fee01ec957988857a03
BLAKE2b-256 2cf80ca1f4ec1a59f6be42ce62126f95e5f7352db4e2f78eac204dd0b8c12919

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