在wsl的python 3.14.3容器中使用databend包

pypi上的databend项目页面:https://pypi.org/project/databend/

在旧版的linux上安装会报错,虽然可以解决,但是在python中import报错就没办法了。

复制代码
import databend

thread '<unnamed>' panicked at /root/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.45.0/src/runtime/scheduler/multi_thread/worker.rs:460:13:
OS can't spawn worker thread: Operation not permitted (os error 1)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
fatal runtime error: failed to initiate panic, error 2761651232
Aborted (core dumped)

再在WSL中安装,应该是Linux版本够高,所以安装,导入都成功。

按照页面介绍的语法,显示版本号。

复制代码
pip install databend
python3
Python 3.14.3 (main, Feb  4 2026, 20:08:31) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import databend; ctx = databend.SessionContext(); ctx.sql('SELECT version() AS version')
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                              version                                             │
│                                              String                                              │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ 'Databend Query v1.2.810-nightly-613a23a366(rust-1.88.0-nightly-2025-09-10T16:50:37.672119017Z)' │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘

但是查询本地文件注册就报错了。

复制代码
>>> ctx.register_tsv("cxy", "/par/data/cxy.tsv", pattern=None, connection=None)
Traceback (most recent call last):
  File "<python-input-9>", line 1, in <module>
    ctx.register_tsv("cxy", "/par/data/cxy.tsv", pattern=None, connection=None)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: DataFrame collect error: SemanticError. Code: 1065, Text = [QUERY-CTX] Query from TSV file lacks column positions. Specify as $1, $2, etc..

<Backtrace disabled by default. Please use RUST_BACKTRACE=1 to enable>

经求教Databend支持人员,告诉我应该用如下语法,并且不能用*,必须用占位符明确指定列:

复制代码
>>> ctx.sql("select * from 'fs:///' (files=>('/par/data/cxy.tsv'),file_format=>'tsv')")
Traceback (most recent call last):
  File "<python-input-4>", line 1, in <module>
    ctx.sql("select * from 'fs:///' (files=>('/par/data/cxy.tsv'),file_format=>'tsv')")
    ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: Error: SemanticError. Code: 1065, Text = [QUERY-CTX] Query from TSV file lacks column positions. Specify as $1, $2, etc..
>>> ctx.sql("select $1,$2,$3 from 'fs:///' (files=>('/par/data/cxy.tsv'),file_format=>'tsv')")
┌────────────────────────────────────────────┐
│      $1     │      $2     │       $3       │
│ String NULL │ String NULL │   String NULL  │
├─────────────┼─────────────┼────────────────┤
│ 'id'        │ 'name'      │ 'language\r'   │
│ '1'         │ 'Joe'       │ 'Java\r'       │
│ '2'         │ 'Alice'     │ 'JavaScript\r' │
│ '3'         │ 'Leon'      │ 'C/C++\r'      │
│ '4'         │ 'William'   │ 'Java\r'       │
│ '5'         │ 'James'     │ 'C/C++\r'      │
│ '6'         │ 'Enson'     │ 'C/C++'        │
└────────────────────────────────────────────┘

其实还是有个问题,标题行被作为数据显示出来了。而parquet文件正好相反,如果用*直接显示内容。用1占位符反而显示json格式,工作人员解释在 parquet 上执行: select 1 ,是指把所有的列整体当做一个 variant 类型,遵循 snowflake 的语法方式。

复制代码
>>> ctx.sql("select $1 from 'fs:///' (files=>('/par/duck.parquet'),file_format=>'parquet')")
┌──────────────────────────┐
│            $1            │
│          Variant         │
├──────────────────────────┤
│ '{"mpz_sum":"13522500"}' │
└──────────────────────────┘
>>> ctx.sql("select * from 'fs:///' (files=>('/par/duck.parquet'),file_format=>'parquet')")
┌─────────────┐
│   mpz_sum   │
│ String NULL │
├─────────────┤
│ '13522500'  │
└─────────────┘
相关推荐
IT_Octopus2 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
一只鹿鹿鹿2 小时前
政务外网整体设计方案(PPT)
大数据·数据库·web安全·系统安全·流程图·政务
2603_965148112 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
AI砖家2 小时前
安全进入 Agent Loop:2027 年 Coding Agent 的决胜点
数据库·安全·codex·vibecoding
wangqiaowq3 小时前
SQL server C盘空间占满的处理
数据库·sql
文人sec3 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
数字新视界3 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
程序猿追3 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓3 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
SelectDB技术团队3 小时前
冷热分层从建到验:Storage Policy 创建、表级与分区级绑定、SHOW TABLETS 验证的完整命令
大数据·数据库·elasticsearch·搜索引擎·数据分析·apache doris·冷热分层