[英]connect to Wonderware Historian OLE DB using python 3 and OSX or Linux
誰能在OSX(或Linux)上使用python3與Wonderware Historian共享功能連接方法?
Historian顯然是Microsoft SQL Server OLE DB(請參閱http://www.logic-control.com/datasheets/1/Historian/HistorianConcepts.pdf的 pg102)。
另一則SO帖子建議,唯一能夠連接到OLE DB的python庫是“ adodbapi”( 使用Python連接到Microsoft SQL服務器 )
嘗試輸入代碼(使用默認的RO憑據):
import adodbapi
ServerName = "ServerName"
MSQLDatabase = "Runtime"
username = "aaUser"
password = "pwUser"
conn = adodbapi.connect("PROVIDER=INSQL;Data Source={0};Database={1};trusted_connection=yes;UID={2};PWD{3};".format(ServerName,MSQLDatabase,username,password))
這給出了一個錯誤:
adodbapi.apibase.OperationalError: (InterfaceError("Windows COM Error: Dispatch('ADODB.Connection') failed.",)...
該錯誤可能是由於pywin32軟件包的缺失和不可用所致,該軟件包顯然僅適用於 Windows( 在Mac上為Pywin32(com對象) )
提示贊賞。 我高度懷疑在這種情況下無法與Microsoft vs Mac / Linux進行溝通。
您應該能夠使用Python訪問MS SQL Server數據庫(例如Wonderware Historian數據庫)。
檢查事項:
在Linux和Windows上,我都可以通過sqlalchemy和pyodbc使用Python3訪問Wonderware服務器-我沒有Mac,因此您需要一個Mac。 我讀過有其他可用的驅動程序,但是我對它們沒有任何經驗。 如果您有任何建議,在這里我會很高興聽到。
這就是我模塊化pyodbc功能的方式。 本質上,我已經在代碼中定義了一個函數來設置sql引擎連接:
def get_conn():
conn_pyodbc = pyodbc.connect(DSN=<myDSN>, UID=<user>, PWD=<pass>)
return conn_pyodbc
我這樣使用連接:
def executeQuery(sql_query):
with get_conn() as conn:
df = pd.read_sql(sql_query, conn)
使用上下文管理器似乎是處理打開和關閉數據庫連接的簡便方法。
就設置DSN而言,我需要安裝Microsoft ODBC驅動程序,通過單擊我在網上找到的一些鏈接即可輕松完成。 成功安裝后,我手動編輯了/etc/odbc.init和/etc/odbcinst.ini文件,使它們現在看起來像這樣:
$ cat /etc/odbc.ini
[myDSN]
Driver=ODBC Driver 13 for SQL Server
Description=Awesome server
Trace=No
Server=<serverIP>
和
$ cat odbcinst.ini
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.1
UsageCount=1
以我的經驗,您可以使用“受信任的連接”,但這意味着您的計算機將嘗試使用Windows憑據連接到服務器。 如果您登錄到可以訪問有問題的數據的Windows計算機,這些功能就可以使用。 在Linux上運行是另一回事,因此我堅持使用用戶/密碼組合。
別的問題隨時問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.