如何通过CSV文件在Aspentech Infoplus 21中批量查询多标签数据?
解决AspenTech Infoplus 21多TAG查询问题
你的问题出在多TAG的SQL语法构造错误:单TAG时用NAME='%s'没问题,但从CSV读取的多TAG是一个Series,直接拼到SQL里会生成无效语法,导致查询失败。以下是修正方案:
核心思路
多TAG查询需要用SQL的IN子句,格式为NAME IN ('TAG1', 'TAG2', 'TAG3'),而不是单个NAME='TAG'。同时建议在查询结果中保留NAME列,方便区分不同TAG的数据。
修正后的代码
方法1:字符串拼接(适合可控的CSV数据源)
import pandas as pd import pyodbc from datetime import datetime, timedelta # 连接IP21数据库 conn = pyodbc.connect("DRIVER={AspenTech SQLplus};HOST=192.xxx.x.xxx;PORT=10014") # 读取CSV中的TAG列表,过滤空值 tags = pd.read_csv("C:\\Users\\xxx\\TAGcsvIN.csv", decimal=',', sep=';', parse_dates=True) tag_list = tags['TAGcsv'].dropna().tolist() # 去掉可能的空TAG # 构造时间范围 end = datetime.now() start = end - timedelta(days=2) end_str = end.strftime("%Y-%m-%d %H:%M:%S") start_str = start.strftime("%Y-%m-%d %H:%M:%S") # 构造多TAG的SQL语句 tag_str = "', '".join(tag_list) # 把TAG转为'TAG1', 'TAG2'格式 sql = f""" SELECT NAME, TS, VALUE FROM HISTORY WHERE NAME IN ('{tag_str}') AND PERIOD = 300*10 AND REQUEST = 2 AND TS BETWEEN TIMESTAMP'{start_str}' AND TIMESTAMP'{end_str}' """ # 执行查询 data = pd.read_sql(sql, conn)
方法2:参数化查询(更安全,避免SQL注入)
如果CSV中的TAG可能包含特殊字符,建议用参数化查询:
import pandas as pd import pyodbc from datetime import datetime, timedelta conn = pyodbc.connect("DRIVER={AspenTech SQLplus};HOST=192.xxx.x.xxx;PORT=10014") tags = pd.read_csv("C:\\Users\\xxx\\TAGcsvIN.csv", decimal=',', sep=';', parse_dates=True) tag_list = tags['TAGcsv'].dropna().tolist() end = datetime.now() start = end - timedelta(days=2) end_str = end.strftime("%Y-%m-%d %H:%M:%S") start_str = start.strftime("%Y-%m-%d %H:%M:%S") # 构造参数占位符,每个TAG对应一个? placeholders = ', '.join(['?'] * len(tag_list)) sql = f""" SELECT NAME, TS, VALUE FROM HISTORY WHERE NAME IN ({placeholders}) AND PERIOD = 300*10 AND REQUEST = 2 AND TS BETWEEN TIMESTAMP? AND TIMESTAMP? """ # 传入参数:TAG列表 + 开始/结束时间 data = pd.read_sql(sql, conn, params=[*tag_list, start_str, end_str])
关键说明
- 去掉了原SQL中重复的
REQUEST=2条件,简化语法。 - 添加
NAME字段到查询结果,方便后续区分不同TAG的时序数据。 - 用
dropna()过滤CSV中可能存在的空TAG,避免无效查询。
内容的提问来源于stack exchange,提问作者niccolo_guazz
相关产品推荐
相关产品推荐

