python_udf

Eingebettete CPython-UDFs für DuckDB — py_eval, py_agg, py_scan, py_register, py_call, py_map

Maintainer: alitrack

Installation und Laden

INSTALL python_udf FROM community;
LOAD python_udf;

Beispiel

LOAD python_udf;
SELECT py_eval('lambda x: x * 2 + 1', x) FROM range(10) t(x);
-- Aggregate UDF
SELECT py_agg('sum', x) FROM range(100) t(x);
-- Scan from Python
SELECT * FROM py_scan('lambda _: [{"a":1}, {"a":2}]');
-- Register persistent UDF
SELECT py_register('dbl', 'lambda x: x * 2');
-- Call registered UDF
SELECT py_call('dbl', 21);
-- Map values
SELECT py_map('ord', 'hello world');

Über python_udf

CPython-UDFs für DuckDB

Führen Sie Python-Code direkt in SQL-Abfragen aus, mit in DuckDB eingebettetem CPython.

7 Funktionen:

Function Type Description
py_eval(name, arg..) Scalar Evaluate Python lambda/function per row
py_agg(name, arg) Aggregate Full-table aggregate UDF
py_scan(func) Table Generate rows from Python
py_register(name, func) Management Register a Python UDF
py_call(name, arg..) Scalar Call a registered UDF
py_map(func, arg..) Scalar Map a function over values
py_list(name) Utility List registered UDFs

Design:

  • CPython eingebettet über PyO3 (Rust-FFI)
  • Frischer Python-Interpreter pro DuckDB-Verbindung
  • Unterstützt Python 3.11, 3.12, 3.13
  • macOS und Linux x64 unterstützt

Hinweis: Der Binärname der Erweiterung lautet python_udf, um eine Kollision mit der Kern-Erweiterung python von DuckDB zu vermeiden. Das Quell-Repository bleibt duckdb-python.

Hinzugefügte Funktionen

Diese Erweiterung fügt keine Funktionen hinzu.

Überladene Funktionen

Diese Erweiterung fügt keine Funktionsüberladungen hinzu.

Hinzugefügte Typen

Diese Erweiterung fügt keine Typen hinzu.

Hinzugefügte Einstellungen

Diese Erweiterung fügt keine Einstellungen hinzu.