安装 chDB for Python
要求
在 macOS 和 Linux (x86_64 和 ARM64) 上,Python 3.8+
安装
使用
CLI 示例:
Python 文件示例:
查询可以使用任何 支持的格式 返回数据,以及 Dataframe
和 Debug
。
GitHub 仓库
您可以在 chdb-io/chdb 查找该项目的 GitHub 仓库。
数据输入
以下方法可用于访问磁盘和内存中的数据格式:
对文件的查询 (Parquet, CSV, JSON, Arrow, ORC 及 60+ 格式)
您可以执行 SQL 并返回所需格式的数据。
处理 Parquet 或 CSV
Pandas DataFrame 输出
对表的查询 (Pandas DataFrame, Parquet 文件/字节, Arrow 字节)
对 Pandas DataFrame 的查询
使用有状态会话的查询
会话将保持查询的状态。所有 DDL 和 DML 状态将保存在一个目录中。目录路径可以作为参数传入。如果没有传入,将创建一个临时目录。
如果未指定路径,临时目录将在会话对象被删除时删除。否则,路径将被保留。
请注意,默认数据库是 _local
,默认引擎是 Memory
,这意味着所有数据都将存储在内存中。如果您想将数据存储在磁盘上,则应创建另一个数据库。
另请参见: test_stateful.py。
使用 Python DB-API 2.0 的查询
使用 UDF (用户定义函数) 的查询
关于 chDB Python UDF (用户定义函数) 装饰器的一些说明。
- 该函数应为无状态的。仅支持 UDF,不支持 UDAF(用户定义聚合函数)。
- 默认返回类型为字符串。如果您想更改返回类型,可以将返回类型作为参数传入。返回类型应为 以下类型之一。
- 该函数应接受类型为字符串的参数。由于输入为制表符分隔的所有参数都是字符串。
- 该函数将在每一行输入时被调用。例如:
- 该函数应是一个纯 Python 函数。您应该导入所有在 函数内部 使用的 Python 模块。
- 使用的 Python 解释器与运行脚本所使用的相同。您可以通过
sys.executable
获取它。
另请参见: test_udf.py。
Python 表引擎
对 Pandas DataFrame 的查询
对 Arrow 表的查询
对 chdb.PyReader 类实例的查询
- 您必须继承 chdb.PyReader 类并实现
read
方法。 read
方法应:- 返回一个列表的列表,第一维是列,第二维是行,列的顺序应与
read
的第一个参数col_names
相同。 - 在没有更多数据可读时返回空列表。
- 是有状态的,游标应在
read
方法中更新。
- 返回一个列表的列表,第一维是列,第二维是行,列的顺序应与
- 可选的
get_schema
方法可以实现以返回表的模式。原型为def get_schema(self) -> List[Tuple[str, str]]:
,返回值是一个元组列表,每个元组包含列名和列类型。列类型应为 以下类型之一。
另请参见: test_query_py.py。
限制
- 支持的列类型:
pandas.Series
,pyarrow.array
,chdb.PyReader
- 支持的数据类型:Int, UInt, Float, String, Date, DateTime, Decimal
- Python 对象类型将转化为字符串
- Pandas DataFrame 的性能最佳,Arrow 表优于 PyReader