环境
操作系统:windows10
IDE:Pycharm2020
python版本:Pyhon3.6.6
TD-server:docker-win-Tdengine.2.1.0.0
TD-client:TD-client-2.1.0.0-win
准备
1.安装Docker、下载TDengine镜像
官网教程:https://www.taosdata.com/cn/documentation/getting-started/docker
2.安装TDclient-win,并进入C:\TDengine\connector\python\windows\python3
安装taos三方库
pip install ./
3.下载TDengineGUI
https://gitee.com/skyebaobao/TDengineGUI/releases/v1.0.0
踩坑点:
1.在 Docker 容器中运行 TDengine,不要按官网案例下拉运行镜像,按需添加自己的配置参数,开放如下端口,开启重启自启动
docker run -d --hostname="jimmy" --name tdengine -p 6030-6042:6030-6042 -p 6030-6042:6030-6042/udp tdengine/tdengine --restart=always
2.容器Linux环境时区修改
apt-get install tzdata
tzselect
使用
1.使用docker-Desktop 进入容器交互终端,或打开终端,输入:
docker exec -it container_id /bin/bash
2.使用taos前先修改配置!
vim /etc/taos/taos.cfg
# taos.cfg
numOfThreadsPerCore 2.0
ratioOfQueryCores 2.0
# 预写日志等级,默认为1时,间隔插入大量实时数据时会报错
walLevel 0
maxSQLLength 1048576
3.进入taos客户端:
taos
4.设置root密码:
alter user root pass '123456';
5.创建数据库(可使用GUI创建,点击修改配置)
create database test;
GUI:
模型
class Equipment(Base):
__tablename__ = 'equipments'
id = Column(Integer, primary_key=True)
Equip_name = Column(VARCHAR(255), nullable=False, comment='设备表')
Group_id = Column(Integer, nullable=False, comment='组id')
Equip_id = Column(Integer, nullable=False, comment='设备id')
class Tag(Base):
__tablename__ = 'tags'
id = Column(Integer, primary_key=True)
Tag_name = Column(String(255), nullable=False, comment='标签名称')
Equip_id = Column(Integer, nullable=False, comment='设备id')
插入实时数据
import taos
import redis
import time
import datetime
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from models import Tag, Equipment
from apscheduler.schedulers.blocking import BlockingScheduler
# 初始化数据库连接:
engine = create_engine('mysql+mysqlconnector://root:123456@192.168.2.11:3306/test')
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
# 创建session对象:
session = DBSession()
# 查询所有设备id
equipments_id = session.query(Equipment.Equip_id).all()
def job():
# redis连接池
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
# 连接TDengine
conn = taos.connect(host='jimmy', user='root', password='123456', database='test')
# 建立游标
cursor = conn.cursor()
# 取redis数据
data = r.hgetall('data_test')
# 时间戳生成
t = time.time()
timestamp = str(int(round(t * 1000)))
# SQL拼接
SQL = 'insert into'
for equip_id in equipments_id:
SQL += ' equip_' + str(equip_id[0]) + ' values (' + timestamp
equip_tags = session.query(Tag.Tag_name).filter_by(Equip_id=equip_id[0]).all()
session.close()
for tag in equip_tags:
tag_value = data[tag[0]]
SQL += ',' + tag_value
SQL += ')\n'
SQL += ';'
print('开始插入:', datetime.datetime.now())
try:
cursor.execute(SQL)
print('插入完成:', datetime.datetime.now())
return
except Exception as err:
conn.close()
raise (err)
scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', seconds=3)
scheduler.start()
数据导出
taosdump -o ./dump/all_table -u root -p 123456 -D test -t 500 -B 100 -T 12 -S 1678900000
Docker容器内数据导出\导入
docker cp /root/xxx/xxx C:\xxx\xxx
docker cp C:\xxx\xxx wdsfw2e2rwd:/root/xxx
后记
- centos7安装后taosd.service文件空
[Unit]
Description=TDengine server service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/taosd
ExecStartPre=/usr/local/taos/bin/startPre.sh
TimeoutStopSec=1000000s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
StandardOutput=null
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
systemctl daemon-reload重新加载
版权声明:本文为qq_40582266原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。