PyIceberg
| Status | verified |
|---|---|
| Reads | yes |
| Writes | yes (format version 2) |
| Iceberg v3 | reads; cannot write |
| Geometry, geography | no (reads schema and counts only) |
| Last verified | 2026-10-03 (PyIceberg 0.12) |
Connect
from pyiceberg.catalog.rest import RestCatalog
catalog = RestCatalog(name='lhbox', uri='https://catalog.lakehousebox.com',
warehouse='s3://<handle>--<catalog>/', credential='<client_id>:<client_secret>',
**{'s3.endpoint': 'https://s3.lakehousebox.com', 's3.path-style-access': 'true'})
table = catalog.load_table(('<namespace>', '<table>'))
# writing: create from an Arrow schema, then append
import pyarrow.parquet as pq
arrow = pq.read_table('cities.parquet')
tbl = catalog.create_table(('demo', 'cities'), schema=arrow.schema)
tbl.append(arrow)
PyIceberg writes one data file per append and a complete snapshot summary; DuckDB splits large writes into several files. Both are read identically by either engine.
Using PyIceberg with LakehouseBox and found something missing, wrong or out of date here? Write to hello@lakehousebox.com: what you ran, the version, and what happened. Product names and logos are trademarks of their owners; their use here does not imply endorsement.