Вы можете использовать API OLE DB, входящий в состав профессионального iHistorian, см. руководство по iHistorian. . В руководстве вы можете найти доступные таблицы и несколько примеров кода SQL. Проверьте правильность установки API с помощью программы «Historian Interactive SQL», входящей в состав iHistorian.
Я использовал пакет 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, я был бы рад услышать об этом.
person
Richard Eijsberg
schedule
22.03.2018