Skip to main content

Python quickstart

pip install openqvd
import openqvd

# Read as a PyArrow Table
table = openqvd.read("data.qvd")
table = openqvd.read("data.qvd", columns=["OrderId", "Amount"])

# Predicate pushdown (filtering before Arrow conversion)
table = openqvd.read("data.qvd", filters=[
{"column": "Region", "op": "eq", "value": "West"},
{"column": "Status", "op": "is_in", "value": ["Open", "Pending"]},
])

# Inspect metadata only (no row decoding)
info = openqvd.schema("data.qvd")
print(info.table_name, info.num_rows, [f.name for f in info.fields])

# Write from a PyArrow Table
openqvd.write(table, "out.qvd")

With Polars​

import openqvd.polars # registers pl.read_qvd, pl.scan_qvd, df.qvd.write()
import polars as pl

df = pl.read_qvd("data.qvd")
lf = pl.scan_qvd("data.qvd", columns=["A", "B"])
df.qvd.write("out.qvd")

With Pandas​

df = openqvd.read("data.qvd").to_pandas()

See the Python API reference for the full surface, including the DuckDB integration.