gpt4 book ai didi

python - 我如何使用 python 轻松地从 historian 中提取数据?

转载 作者:太空宇宙 更新时间:2023-11-03 15:51:13 32 4
gpt4 key购买 nike

我对 Proficy Historian 和 Python 还很陌生。我的应用程序的目的是开始从 Proficy 中提取数据。

GE (Proficy) Historian 安装在虚拟机 Server A 上,而我的 python 安装在另一个 VM Server B 上。

两台服务器都在同一防火墙下并在同一 VLAN 中,因此它们可以通信。

我试着环顾四周,但我不确定哪种提取数据的方法最简单...有什么帮助吗?

最佳答案

您可以使用 Proficy iHistorian 中包含的 OLE DB API,请参阅 manual of iHistorian .在手册中,您可以找到可用的表格和一些有关 SQL 代码的示例。使用 iHistorian 附带的“Historian Interactive SQL”程序检查 API 是否正确安装。

我使用了 python 包' PyADO ' 为了连接到 OLE DB API(从 GitHub Gist 获得,还需要包“win32com”和“pythoncom”)。该模块在 PyPi 上不可用,因此只需下载、解压并将其放入“site-packages”文件夹(或您当前的工作目录)中。代码中存在一些错误,通过将“不等于”的所有“<>”符号替换为“!=”,在“PyADO.py”文件中解决此问题。对于 python 3,用法还将所有打印语句从“print blabla”更新为“print(blabla)”。为了提取数据,以下内容就足够了(我包括了“prettytable”以便获得像样的数据打印):

import PyADO
from prettytable import PrettyTable

conn = PyADO.connect(None,host='IHISTORIAN_SERVER_NAME',user='USERNAME',password='PASSWORD',provider='iHOLEDB.iHistorian.1')
curs = conn.cursor()

curs.execute("SELECT timestamp, value, quality, tagname FROM ihrawdata WHERE samplingmode=rawbytime AND timestamp>='01-Mar-2018 13:58' AND timestamp<='01-Mar-2018 14:30' AND (tagname=SOMETAG OR tagname=OTHERTAG)")
result = curs.fetchall()
descr = curs.description

header = [i[0] for i in descr]
table = PrettyTable(header)
for row in result:
table.add_row(row)
print(table)

curs.close()
conn.close()

导致:

+---------------------------+--------------------+------------------+--------------+
| timestamp | value | quality | tagname |
+---------------------------+--------------------+------------------+--------------+
| 2018-03-01 13:58:15+00:00 | -4.422495365142822 | Good NonSpecific | SOMETAG |
| 2018-03-01 13:59:15+00:00 | -3.046903133392334 | Good NonSpecific | SOMETAG |
| 2018-03-01 13:58:00+00:00 | 61.07942581176758 | Good NonSpecific | OTHERTAG |
| 2018-03-01 13:59:00+00:00 | 60.99810791015625 | Good NonSpecific | OTHERTAG |
| 2018-03-01 14:00:00+00:00 | 62.58036422729492 | Good NonSpecific | OTHERTAG |
+---------------------------+--------------------+------------------+--------------+

我还尝试使用软件包“adodbapi” ',但我无法让它发挥作用。似乎 ODBC 根本无法与 iHistorian 一起工作,这使得包“pyodbc”也不适合它。如果有人有连接到 OLE DB API 和维护良好的 python 包的解决方案,我将很高兴听到。

关于python - 我如何使用 python 轻松地从 historian 中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46682248/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com