有没有人可以在OSX(或linux)上使用python3与Wonderware的Historian共享一个功能连接方法?
Historian显然是Microsoft SQL Server OLE DB(参见http://www.logic-control.com/datasheets/1/Historian/HistorianConcepts.pdf的第102页)。
另一篇SO帖子表明,唯一能够连接到OLE DB的python库是'adodbapi'(Connecting to Microsoft SQL server using Python)
代码尝试(使用默认RO凭据):
adodbapi.apibase.OperationalError: (InterfaceError("Windows COM Error: Dispatch('ADODB.Connection') failed.",)...
这会出错:
{{1}}
错误可能是由于pywin32软件包缺失和不可用,显然只有Windows(Pywin32 (com objects) on Mac)
小贴士表示赞赏。我非常怀疑微软与Mac / Linux世界在这种情况下无法弥合。
答案 0 :(得分:3)
您应该能够使用Python访问MS SQL Server数据库(例如Wonderware Historian数据库)。
要检查的事项:
答案 1 :(得分:1)
我可以通过sqlalchemy和Linux上的Windows上的pyodbc使用Python3访问Wonderware服务器 - 我没有Mac,所以你自己就在那里。我已经读过有其他可用的驱动程序,但我对它们没有任何经验。如果您有任何建议,我很高兴听到他们的意见。
这是我模块化pyodbc功能的方式。本质上,我在代码中定义了一个设置sql引擎conncetion的函数:
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上运行是一个不同的故事,所以我保持用户/密码组合。
随时可以提出问题。