SuperAPI AI 工具集

duckdb

通用与其它

查看项目

更新于 10-16 01:28

技能介绍

用途:DuckDB 是把专业 SQL 带进 Python 数据科学栈的进程内分析型数据库,针对 OLAP 优化,擅长超出内存规模的大聚合、连接和复杂查询。

主要能力:无需启动或管理服务器,可运行在 Python 进程内;数据可存于 .db 文件或全内存。采用列式存储与向量化执行,分析任务比 SQLite 等行式数据库快。能直接“看到” Python 变量,可对 Pandas DataFrame 变量直接执行 SQL。支持直接查询 CSV、Parquet,可用通配符一次查询多个文件,如 FROM 'data/*.parquet';支持窗口函数、聚合等现代 SQL;提供关系 API 与 duckdb.from_df 等。结果可转为 Pandas、Polars 或 Arrow(.df()、.pl()、.arrow())。支持持久化连接 duckdb.connect('my_data.db'),以及设置 temp_directory、max_memory 触发磁盘溢写、SET threads 控制并行、EXPLAIN ANALYZE 查看执行计划。

使用方式:pip install duckdb;基本模式为 duckdb.sql("SELECT ... FROM df").df(),其中 df 为局部作用域变量。查询文件用 SELECT * FROM 'data.parquet',避免先 pd.read_csv 再过滤;重复查询同一文件可先建 VIEW 或 TABLE;防止 SQL 注入应使用参数化,如 duckdb.execute("SELECT * FROM data WHERE name = ?", [user_input])。

适用场景:对 Pandas/Polars 数据做复杂 SQL;直接查询大型 Parquet 或 CSV;跨源连接(如 CSV 与 DataFrame);构建 SQL 分析管线;管理超出 Excel 但无需 PostgreSQL 服务器的本地数据集;机器学习中间数据存储与特征工程。

限制:不适合高频写入(OLTP),此类需求应使用 SQLite 或 PostgreSQL;使用文件型数据库时需关闭连接或使用上下文管理器以避免文件锁;同一 .db 文件被多进程以写方式打开会失败,次要进程可用 read_only=True;日期格式异常时可用 strptime 解析。官方文档为 https://duckdb.org/docs/,Python API 见 https://duckdb.org/docs/api/python/overview。