TDengine Python原生连接使用指南
概述
本文将详细介绍如何使用Python原生接口连接和操作TDengine时序数据库。TDengine是一款高性能、分布式的时序数据库管理系统,特别适合物联网、工业互联网、车联网等场景下的海量时序数据处理。
环境准备
在使用Python连接TDengine前,需要确保:
- 已安装TDengine服务端
- 已安装taospy库(
pip install taospy)
基本连接操作
建立连接
import taos
conn = taos.connect()
这行代码会使用默认配置连接到本地运行的TDengine服务。如果需要指定主机、用户名、密码等参数,可以使用:
conn = taos.connect(host="127.0.0.1", user="root", password="taosdata")
数据库操作
# 删除数据库(如果存在)
conn.execute("DROP DATABASE IF EXISTS test")
# 创建数据库,设置数据保留36500天
conn.execute("CREATE DATABASE test keep 36500")
# 切换当前数据库
conn.select_db("test")
execute()方法用于执行SQL语句并返回受影响的行数,适合执行DDL和DML语句。
数据表操作
创建超级表
conn.execute("CREATE STABLE weather(ts TIMESTAMP, temperature FLOAT) TAGS (location INT)")
这里创建了一个名为weather的超级表(Super Table),包含:
- 时间戳字段ts
- 温度值字段temperature
- 标签字段location(用于分组)
插入数据
affected_row = conn.execute("INSERT INTO t1 USING weather TAGS(1) VALUES (now, 23.5) (now+1m, 23.5) (now+2m, 24.4)")
print("affected_row", affected_row)
这段代码展示了如何:
- 创建子表t1并指定标签值location=1
- 一次性插入三条记录,时间戳分别为当前时间、1分钟后和2分钟后
- 获取并打印受影响的行数
数据查询
执行查询
result = conn.query("SELECT * from weather")
query()方法用于执行查询语句并返回结果集对象,适合执行SELECT语句。
获取字段信息
fields = result.fields
for field in fields:
print(field) # 输出字段信息
输出示例:
{name: ts, type: 9, bytes: 8}
{name: temperature, type: 6, bytes: 4}
{name: location, type: 4, bytes: 4}
每个字段包含名称、类型和字节大小信息。
获取查询结果
# 方式1:获取元组列表
data = result.fetch_all()
print(data)
# 方式2:获取字典列表(注释中示例)
# map_data = result.fetch_all_into_dict()
# print(map_data)
fetch_all()返回元组列表,每个元组代表一行数据。输出示例:
[(datetime.datetime(2022, 4, 27, 9, 4, 25, 367000), 23.5, 1),
(datetime.datetime(2022, 4, 27, 9, 5, 25, 367000), 23.5, 1),
(datetime.datetime(2022, 4, 27, 9, 6, 25, 367000), 24.399999618530273, 1)]
连接关闭
conn.close()
使用完毕后应关闭连接以释放资源。
最佳实践
- 批量插入:如示例所示,使用单条INSERT语句插入多条数据可显著提高性能
- 连接池:在生产环境中,建议使用连接池管理数据库连接
- 异常处理:在实际应用中应添加try-except块处理可能的异常
- 数据类型映射:注意TDengine数据类型与Python数据类型的对应关系
总结
本文介绍了使用Python原生接口操作TDengine的基本方法,包括连接管理、数据库操作、表操作和数据查询等核心功能。TDengine的Python接口设计简洁高效,能够很好地满足时序数据存储和分析的需求。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



