Pandas to_sql 方法报错

【TDengine 使用环境】
预生产环境

【TDengine 版本】

3.3.6.13

【操作系统以及版本】

ubuntu 2204

【部署方式】容器

【集群节点数】

1

【集群副本数】

1

【描述业务影响】

无法插入数据

【遇到的问题:问题现象及影响】

pandas.to_sql 无法插入超级表数据

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

python库为


taospy>=2.8.6
pandas>=2.3.3
numpy>=2.2.6

客户端为


TDengine-client-3.3.6.13-lite

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

代码

import numpy as np
import pandas as pd


from sqlalchemy import create_engine, text
from sqlalchemy.types import Integer, Float, TIMESTAMP, String

def create_connection_with_sqlalchemy():
    engine = create_engine(f"taos://root:taosdata@192.168.11.225:6030?timezone=Asia/Shanghai")
    conn = engine.connect()
    return conn

conn = create_connection_with_sqlalchemy()



conn.execute(text("CREATE DATABASE IF NOT EXISTS cq"))
conn.execute(
    text(
        """CREATE STABLE IF NOT EXISTS cq.gas_data (datetime TIMESTAMP,p_t FLOAT,p_c FLOAT,q_export FLOAT,p_export FLOAT,temperature_export FLOAT,q_all FLOAT,open_time INT,close_time INT,status INT) TAGS (gas_no BINARY(64))"""
    ))
conn.execute(text("Use cq"))

n = 10000
for gas_no in ["aaaa"]:
    tmp_df = pd.DataFrame({
        "datetime": pd.date_range("2025-01-01", periods=n, freq="min"),
        "p_t": np.random.rand(n).astype(float),
        "p_c": np.random.rand(n).astype(float),
        "q_export": np.random.rand(n).astype(float),
        "p_export": np.random.rand(n).astype(float),
        "temperature_export": np.random.rand(n).astype(float),
        "q_all": np.random.rand(n).astype(float),
        "open_time": [120] * n,
        "close_time": [360] * n,
        "status": [1] * n,
        "gas_no": gas_no * n,
        "tbname": gas_no * n,
    })

    column_types = {
        'datetime': TIMESTAMP,
        'p_t': Float,
        'p_c': Float,
        'q_export': Float,
        'p_export': Float,
        'temperature_export': Float,
        'q_all': Float,
        'open_time': Integer,
        'close_time': Integer,
        'status': Integer,
        'gas_no': String,
    }
    tmp_df.to_sql("gas_data", con=conn,
                  index=False, if_exists="append",dtype=column_types, chunksize=100)

    print(len(tmp_df))

错误

原始错误为

image

使用gdb排查,发现

这是个bug,已经记录。检查下表名长度和数据库名长度是否小于最大值限制