Python开发后端InfluxDB数据库测试接口

1、使用PyCharm创建一个Python项目wzClear

2、新建package包wzInfluxdb和wzConfig包,如上图所示,新建一个DB.json配置文件并添加influxdb配置信息,DB.json为统一配置文件

  {"influxdbV1": {"url": "http://192.168.0.44:8086","username": "root","password": "root","database": "wzClean","measurement": "HourData"}
}

3、搭建influxdb_util.py配置文件

import json
import os
import pandas as pd
from influxdb import InfluxDBClientclass InfluxDBUtil:def __init__(self, config_path='./wzConfig/DB.json'):self.client = Noneself.measurement = Noneself._load_config(config_path)self._connect()def _load_config(self, path):with open(path, 'r', encoding='utf-8') as f:config = json.load(f)influx = config['influxdbV1']self.host, self.port = influx['url'].replace("http://", "").split(":")self.username = influx['username']self.password = influx['password']self.database = influx['database']self.measurement = influx['measurement']def _connect(self):try:self.client = InfluxDBClient(host=self.host.strip(),port=int(self.port.strip()),username=self.username,password=self.password,database=self.database)self.log.info("InfluxDB connected.")except Exception as e:self.log.error(f"InfluxDB connection error: {e}")def insert(self, data: list):try:df = pd.DataFrame(data)if df.empty:self.log.warning("No data to insert.")returndf["time"] = pd.to_datetime(df["colTime"], format="%Y-%m-%d %H:%M:%S").dt.strftime("%Y-%m-%dT%H:%M:%SZ")df["colValue"] = df["colValue"].astype(str)df["isBreak"] = df["isBreak"].astype(str)df["proID"] = df["proID"].astype(str)df["varID"] = df["varID"].astype(str)json_body = df.apply(lambda row: {"measurement": self.measurement,"tags": {"proID": row["proID"],"varID": row["varID"]},"time": row["time"],"fields": {"colValue": row["colValue"],"isBreak": row["isBreak"]}}, axis=1).tolist()if self.client.write_points(json_body):self.log.info(f"{len(json_body)} points inserted into InfluxDB.")else:self.log.error("Failed to insert data.")except Exception as e:self.log.error(f"Insert error: {e}")def drop_measurement(self, measurement_name):"""删除表:param measurement_name::return:"""try:self.client.query(f'DROP MEASUREMENT "{measurement_name}"')except Exception as e:print(f"Drop measurement error: {e}")def query(self, influxql: str):"""使用查询数据库信息:param influxql::return:"""try:result = self.client.query(influxql)points = list(result.get_points())return pointsexcept Exception as e:return []def close(self):if self.client:self.client.close()

4、接口测试,新建一个app.py,使用flask进行测试

from flask import Flask, request, jsonify, send_from_directory
from wzInfluxdb.influxdb_util import InfluxDBUtilapp = Flask(__name__,static_folder=ROOT_DIR + '/static',static_url_path='/static',template_folder=ROOT_DIR + '/templates')
@app.route('/searchObject', methods=['POST', 'GET'])
def searchObject():now = datetime.now()# 计算前一天 00:00:00 和 当天 00:00:00,转为 UTCstart_dt = (now - timedelta(days=days)).replace(hour=0, minute=0, second=0, microsecond=0)end_dt = now.replace(hour=0, minute=0, second=0, microsecond=0)# 转为 UTC ISO 格式start_time_utc = start_dt.astimezone(pytz.UTC).strftime('%Y-%m-%dT%H:%M:%SZ')end_time_utc = end_dt.astimezone(pytz.UTC).strftime('%Y-%m-%dT%H:%M:%SZ')# 构建 SQL 查询  单个对象ID的查询和绘制图像sql = f"SELECT amount,strTime FROM HourData WHERE equID = '111' AND varID = '30' AND time >= '{start_time_utc}' AND time < '{end_time_utc}' "influxdb = InfluxDBUtil()# data2 = influxdb.query_measurement(condition="equID='202012021658119701893f93cec9970'", limit=5)data2 = influxdb.query(sql)return jsonify({"result": data2 })except Exception as e:return jsonify({"error": str(e)}), 500

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

采用LLaMa-Factory对QWen大模型实现微调(效果很好)

前言 LLaMA-factory是一个非常有用的开源框架。关于利用llama-factory实现大模型的微调&#xff0c;研究了有一个多月了&#xff0c;终于相对成功的微调了一个QWen的大模型。其中的曲折愿和大家分享&#xff01; 一、源码的下载 在github上的网址&#xff1a; GitHub - hiyou…

深入理解深度Q网络DQN:基于python从零实现

DQN是什么玩意儿&#xff1f; 深度Q网络&#xff08;DQN&#xff09;是深度强化学习领域里一个超厉害的算法。它把Q学习和深度神经网络巧妙地结合在了一起&#xff0c;专门用来搞定那些状态空间维度特别高、特别复杂的难题。它展示了用函数近似来学习价值函数的超能力&#xf…

机械物理:水力发电站工作原理是什么?

水利发电站的工作原理是将水的势能转化为电能&#xff0c;主要依赖水体的重力作用与能量转换设备。以下是其核心步骤和组成部分的详细解释&#xff1a; 1. 蓄水与势能积累 水坝与水库&#xff1a;通过建造水坝拦截河流&#xff0c;形成水库蓄水。水位升高后&#xff0c;水体的…

[面试]SoC验证工程师面试常见问题(五)TLM通信篇

SoC验证工程师面试常见问题(五) 摘要:UVM (Universal Verification Methodology) 中的 TLM (Transaction Level Modeling) 通信是一种用于在验证组件之间传递事务(Transaction)的高层次抽象机制。它通过端口(Port)和导出(Export)实现组件间的解耦通信,避免了信…

CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发

CAD插件实现块属性值与excel的互动&#xff0c;效果如下&#xff1a; 加载dll插件&#xff08;CAD 命令行输入netload &#xff0c;运行xx即可导出Excel&#xff0c;运行xx1即可根据excel更新dwg块属性值。&#xff09; 部分代码如下 // 4. 开启事务更新CAD数据using (Transact…

【数据挖掘】Apriori算法

Apriori算法是经典的关联规则挖掘算法&#xff0c;用于从事务型数据库中发现频繁项集和强关联规则&#xff0c;特别常用于购物篮分析等场景。 &#x1f9e0; 核心思想&#xff08;Apriori原则&#xff09; 一个项集是频繁的&#xff0c;前提是它的所有子集也必须是频繁的。 即&…

单链表设计与实现

01. 单链表简介 在数据结构中&#xff0c;单链表的实现可以分为 带头结点 和 不带头结点 两种方式&#xff0c;这里我们讨论第二种方式。 头结点&#xff1a;链表第一个节点不存实际数据&#xff0c;仅作为辅助节点指向首元节点&#xff08;第一个数据节点&#xff09;。头指…

【论文阅读】——Articulate AnyMesh: Open-Vocabulary 3D Articulated Objects Modeling

文章目录 摘要一、介绍二、相关工作2.1. 铰接对象建模2.2. 部件感知3D生成 三、方法3.1. 概述3.2. 通过VLM助手进行可移动部件分割3.3. 通过几何感知视觉提示的发音估计3.4. 通过随机关节状态进行细化 四、实验4.1. 定量实验发音估计设置: 4.2. 应用程序 五、结论六、思考 摘要…

Zookeeper单机版安装部署

目录 1.1、概述1.2、系统环境1.3、部署流程1.3.1、下载安装包1.3.2、解压文件1.3.3、创建数据目录和日志目录1.3.4、配置ZooKeeper1.3.5、启动ZooKeeper服务1.3.6、连接和验证 1.4、Zookeeper服务管理命令1.4.1、启动Zookeeper服务1.4.2、停止Zookeeper服务1.4.3、查看Zookeepe…

在 Elasticsearch 中删除文档中的某个字段

作者&#xff1a;来自 Elastic Kofi Bartlett 探索在 Elasticsearch 中删除文档字段的方法。 更多有关 Elasticsearch 文档的操作&#xff0c;请详细阅读文章 “开始使用 Elasticsearch &#xff08;1&#xff09;”。 想获得 Elastic 认证&#xff1f;查看下一期 Elasticsear…

元数据和主数据

元数据和主数据是数据管理中的两个关键概念&#xff0c;其核心区别如下&#xff1a; 1. 定义与本质 元数据&#xff08;Metadata&#xff09; “关于数据的数据”&#xff0c;用于描述数据的属性、结构、来源、用途等上下文信息。 示例&#xff1a;数据库表的字段名称、数据类型…

java的Stream流处理

Java Stream 流处理详解 Stream 是 Java 8 引入的一个强大的数据处理抽象&#xff0c;它允许你以声明式方式处理数据集合&#xff08;类似于 SQL 语句&#xff09;&#xff0c;支持并行操作&#xff0c;提高了代码的可读性和处理效率。 一、Stream 的核心概念 1. 什么是 Str…

llama-Factory不宜直接挂接Ollama的大模型

前言 llama-Factory尝试使用Ollama本地安装的大模型。 一、在Ollama中安装QWen 安装qwen:0.5b 安装完成了&#xff1a; 同理安装qwen2.5:0.5b 安装完毕后&#xff0c;再用ollama list进行查看&#xff1a; 我们在chatbox中进行查看&#xff1a; 说明这两个大模型&#xff0c;…

基于WSL用MSVC编译ffmpeg7.1

在windows平台编译FFmpeg&#xff0c;网上的大部分资料都是推荐用msys2mingw进行编译。在win10平台&#xff0c;我们可以采用另一种方式&#xff0c;即wslmsvc 实现window平台的ffmpeg编译。 下面将以vs2022ubuntu22.04 为例&#xff0c;介绍此方法 0、前期准备 安装vs2022 &…

vue3+vite项目引入tailwindcss

从2025年1月tailwindcss4.0发布开始使用tailwindcss比之前简化很多 1,安装 yarn add tailwindcss tailwindcss/vite2,配置vite.config.js import tailwindcss from tailwindcss/vite;...plugins: [tailwindcss(),...] ...3,在主css文件顶部添加 注意一定是css文件,不能是sc…

蓝牙RFCOMM协议概述

RFCOMM概述 概念 RFCOMM 协议提供了对 L2CAP 协议上的串行端口的模拟。该协议基于 ETSI 标准 GSM 07.10。 RFCOMM 采用与 TS07.10 相同的字节序列方式。所有二进制数字都按照从低位到高位的顺序&#xff0c;从左至右读。 两个使用RFCOMM通信的蓝牙设备可以打开多个仿真串行端…

[工具]B站缓存工具箱 (By 郭逍遥)

&#x1f4cc; 项目简介 B站缓存工具箱是一个多功能的B站缓存工具&#xff0c;包含视频下载、缓存重载、文件合并及系统设置四大核心功能。基于yutto开发&#xff0c;采用图形化界面操作&#xff0c;极大简化B站资源获取与管理流程。 工具可以直接将原本缓存的视频读取&#…

算法训练营第十三天|226.翻转二叉树、101. 对称二叉树、 104.二叉树的最大深度、111.二叉树的最小深度

递归 递归三部曲&#xff1a; 1.确定参数和返回值2.确定终止条件3.确定单层逻辑 226.翻转二叉树 题目 思路与解法 第一想法&#xff1a; 递归&#xff0c;对每个结点进行反转 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, le…

sunset:Solstice靶场

sunset:Solstice https://www.vulnhub.com/entry/sunset-solstice,499/ 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.244 3&#xff…

AZScreenRecorder最新版:功能强大、操作简便的手机录屏软件

AZScreenRecorder最新版是一款功能强大的手机录屏软件&#xff0c;专为安卓设备设计。它无需ROOT权限&#xff0c;支持无限录制时长&#xff0c;操作简单&#xff0c;录制过程中可以随时暂停&#xff0c;满足不同用户的个性化录屏需求。此外&#xff0c;用户还可以自定义分辨率…