跳到主要内容

Python 驱动

使用我们的官方驱动通过 Python 连接 Databend,支持同步与异步操作。

快速开始

选择适合你的方式:

适用场景安装
databend-driver直接数据库操作,支持 async/awaitpip install databend-driver
databend-sqlalchemyORM 集成,已有 SQLAlchemy 应用pip install databend-sqlalchemy

连接字符串:关于 DSN 格式与示例,请参见 驱动概览


databend-driver(推荐)

功能特性

  • 原生性能:直连 Databend
  • 同步/异步支持:任选编程风格
  • PEP 249 兼容:标准 Python DB API
  • 类型安全:完整 Python 类型映射

同步用法

from databend_driver import BlockingDatabendClient

# 连接并执行
client = BlockingDatabendClient('<your-dsn>')
cursor = client.cursor()

# DDL:创建表
cursor.execute("CREATE TABLE users (id INT, name STRING)")

# 写入:插入数据
cursor.execute("INSERT INTO users VALUES (?, ?)", (1, 'Alice'))

# 查询:读取数据
# 查询:读取数据
cursor.execute("SELECT * FROM users")

# 获取列名
# cursor.description 返回一个元组列表,其中每个元组的第一个元素是列名
print(f"Columns: {[desc[0] for desc in cursor.description]}")

for row in cursor.fetchall():
# row 是一个 databend_driver.Row 对象
# 通过列名访问
print(f"id: {row['id']}, name: {row['name']}")

cursor.close()

Row 对象使用

Row 对象支持多种访问模式和方法:

for row in cursor.fetchall():
# 1. 通过列名访问(推荐)
print(f"Name: {row['name']}")

# 2. 通过索引访问
print(f"First column: {row[0]}")

# 3. 转换为元组
print(f"Values: {row.values()}")

# 4. 显式方法调用
print(row.get_by_field('name'))
print(row.get_by_index(0))

异步用法

import asyncio
from databend_driver import AsyncDatabendClient

async def main():
client = AsyncDatabendClient('<your-dsn>')
conn = await client.get_conn()

# DDL:创建表
await conn.exec("CREATE TABLE users (id INT, name STRING)")

# 写入:插入数据
await conn.exec("INSERT INTO users VALUES (?, ?)", (1, 'Alice'))

# 查询:读取数据
rows = await conn.query_iter("SELECT * FROM users")
async for row in rows:
print(row.values())

await conn.close()

asyncio.run(main())

databend-sqlalchemy

用于 SQLAlchemy ORM 集成:

from sqlalchemy import create_engine, text

engine = create_engine('<your-dsn>')
with engine.connect() as conn:
result = conn.execute(text("SELECT 1"))
print(result.fetchall())

数据类型映射

DatabendPython说明
数值类型
BOOLEANbool
TINYINTint
SMALLINTint
INTint
BIGINTint
FLOATfloat
DOUBLEfloat
DECIMALdecimal.Decimal保留精度
日期/时间
DATEdatetime.date
TIMESTAMPdatetime.datetime
INTERVALdatetime.timedelta
文本/二进制
VARCHARstrUTF-8 编码
BINARYbytes
复杂类型
ARRAYlist支持嵌套结构
TUPLEtuple
MAPdict
VARIANTstrJSON 编码
BITMAPstrBase64 编码
GEOMETRYstrWKT 格式

相关资源

欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验