首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python轻松地从historian中提取数据?

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

Stack Overflow用户
提问于 2017-10-11 15:26:48
回答 2查看 4K关注 0票数 5

我是一个教授历史学家和Python的新手。我的应用程序的目的是开始从Proficy中提取数据。

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

两台服务器位于相同的防火墙和相同的VLAN中,因此它们可以通信。

我试着四处看看,但我不确定哪种方法最容易提取数据……有什么帮助吗?

EN

回答 2

Stack Overflow用户

发布于 2018-03-23 00:58:15

您可以使用包含在proficy iHistorian中的OLE DB API,请参阅manual of iHistorian。在该手册中,您可以找到可用的表和一些SQL代码示例。检查应用编程接口是否正确安装了随iHistorian提供的'Historian Interactive SQL‘程序。

我使用python包'PyADO‘来连接OLE DB API (这是从GitHub Gist获得的,还需要包'win32com’和'pythoncom')。该模块在PyPi上不可用,因此只需下载它,解压缩它并将其放入“site-packages”文件夹(或您当前的工作目录)。代码中存在一些错误,请在'PyADO.py‘文件中修复此错误,方法是将'not equal’的所有'<>‘符号替换为'!=’。对于python 3的使用,也要将所有的print语句从'print blabla‘更新为' print (blabla)’。为了提取数据,下面的条件就足够了(为了得到一个像样的数据打印结果,我包含了'prettytable‘):

代码语言:javascript
复制
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()

结果是:

代码语言:javascript
复制
+---------------------------+--------------------+------------------+--------------+
|         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‘包也不适用于此。如果任何人有一个使用维护良好的python包连接到OLE DB API的解决方案,我将很高兴听到。

票数 5
EN

Stack Overflow用户

发布于 2018-02-22 11:41:48

您可能需要使用Python与GE Historian的REST API接口进行交互。这是一个指向Historian API documentation for Version 5.5的公共链接

它仍然适用于最新版本,但安装iso也有最新的REST API文档(以防此URL过期)。如果您的客户端语言很灵活,GE Historian还提供了C、C++、VC++和VC++6库和示例。在历史记录安装过程中,您可以通过从客户端工具安装历史记录API SDK来查找它们。它们将位于C:\Program Files\Proficy\Proficy Historian\x86\api\

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46682248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档