Python Connector
安装准备
- 已安装TDengine, 如果客户端在Windows上,需要安装Windows 版本的TDengine客户端 (Windows TDengine 客户端安装)
- 已安装python 2.7 or >= 3.4
- 已安装pip
Python客户端安装
Linux
用户可以在源代码的src/connector/python文件夹下找到python2和python3的安装包。用户可以通过pip命令安装:
pip install src/connector/python/linux/python2/
或
pip install src/connector/python/linux/python3/
Windows
在已安装Windows TDengine 客户端的情况下, 将文件”C:\TDengine\driver\taos.dll” 拷贝到 “C:\windows\system32” 目录下, 然后进入Windwos cmd 命令行界面
cd C:\TDengine\connector\python\windows
pip install python2\
或
cd C:\TDengine\connector\python\windows
pip install python3\
*如果机器上没有pip命令,用户可将src/connector/python/python3或src/connector/python/python2下的taos文件夹拷贝到应用程序的目录使用。 对于windows 客户端,安装TDengine windows 客户端后,将C:\TDengine\driver\taos.dll拷贝到C:\windows\system32目录下即可。
使用
代码示例
- 导入TDengine客户端模块
import taos
- 获取连接
conn = taos.connect(host="127.0.0.1", user="root", password="taosdata", config="/etc/taos")
c1 = conn.cursor()
*host 是TDengine 服务端所有IP, config 为客户端配置文件所在目录
- 写入数据
import datetime
# 创建数据库
c1.execute('create database db')
c1.execute('use db')
# 建表
c1.execute('create table tb (ts timestamp, temperature int, humidity float)')
# 插入数据
start_time = datetime.datetime(2019, 11, 1)
affected_rows = c1.execute('insert into tb values (\'%s\', 0, 0.0)' %start_time)
# 批量插入数据
time_interval = datetime.timedelta(seconds=60)
sqlcmd = ['insert into tb values']
for irow in range(1,11):
start_time += time_interval
sqlcmd.append('(\'%s\', %d, %f)' %(start_time, irow, irow*1.2))
affected_rows = c1.execute(' '.join(sqlcmd))
- 查询数据
c1.execute('select * from tb')
# 拉取查询结果
data = c1.fetchall()
# 返回的结果是一个列表,每一行构成列表的一个元素
numOfRows = c1.rowcount
numOfCols = len(c1.description)
for irow in range(numOfRows):
print("Row%d: ts=%s, temperature=%d, humidity=%f" %(irow, data[irow][0], data[irow][1],data[irow][2]))
# 直接使用cursor 循环拉取查询结果
c1.execute('select * from tb')
for data in c1:
print("ts=%s, temperature=%d, humidity=%f" %(data[0], data[1],data[2])
- 创建订阅
# 创建一个主题为 'test' 消费周期为1000毫秒的订阅
# 第一个参数为 True 表示重新开始订阅,如为 False 且之前创建过主题为 'test' 的订阅,则表示继续消费此订阅的数据,而不是重新开始消费所有数据
sub = conn.subscribe(True, "test", "select * from meters;", 1000)
- 消费订阅的数据
data = sub.consume()
for d in data:
print(d)
- 取消订阅
sub.close()
- 关闭连接
c1.close()
conn.close()
帮助信息
用户可通过python的帮助信息直接查看模块的使用信息,或者参考code/examples/python中的示例程序。以下为部分常用类和方法:
TDengineConnection类
参考python中help(taos.TDengineConnection)。
TDengineCursor类
参考python中help(taos.TDengineCursor)。
connect方法
用于生成taos.TDengineConnection的实例。