跳到主要内容

使用 Python 连接 Databend

Databend 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")
for row in cursor.fetchall():
print(row.values())

cursor.close()

异步用法

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 格式

相关资源