You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TDengine Python连接器是否支持executemany?如何提升写入性能?

TDengine Python 时序数据写入性能优化方案

一、executemany 与参数绑定支持

TDengine Python 原生连接器完全支持executemany和参数绑定,这是解决单条写入性能低下的核心方案。

示例代码

import taos

# 建立连接
conn = taos.connect()
cursor = conn.cursor()

# 假设已创建超级表:CREATE TABLE IF NOT EXISTS sensor_stb (ts TIMESTAMP, temp FLOAT, humi INT) TAGS (device_id INT);
# 准备批量写入数据
batch_data = [
    (1690000000000, 26.2, 58, 1),
    (1690000010000, 26.3, 57, 1),
    (1690000020000, 25.9, 60, 2),
    (1690000030000, 26.1, 59, 2)
]

# 用executemany+参数绑定批量写入
cursor.executemany(
    "INSERT INTO sensor_device USING sensor_stb TAGS (?) VALUES (?, ?, ?)",
    batch_data
)
conn.commit()

# 关闭资源
cursor.close()
conn.close()

注意:参数顺序必须和SQL语句中的占位符一一对应,超级表的标签字段和子表的 data 字段都可以用占位符。

二、其他性能提升方法

  • 使用专属批量写入接口:部分版本的TDengine Python连接器提供execute_batch方法,是专为时序数据批量写入优化的接口,性能比executemany更优,示例:
# 假设batch_data是仅包含data字段的二维数组(无需标签字段,若写入固定标签的子表)
cursor.execute_batch("INSERT INTO sensor_device_1 VALUES", batch_data)
  • 复用连接与减少提交次数:不要每次写入都新建连接,尽量复用同一个连接;批量写入完成后一次性调用commit,避免频繁提交事务。
  • 调整连接参数:建立连接时可设置batch_size参数(如taos.connect(batch_size=10000)),控制单次发送的数据包大小,适配网络环境。
  • 使用表组(Table Group):将同类型、同查询维度的子表归入同一个表组,能大幅提升写入与查询的性能。
  • 绝对避免单条循环写入:这是你当前性能差的核心原因,所有写入操作必须以批量方式执行。

内容的提问来源于stack exchange,提问作者JamesLiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 15:10:19