1

任何人都可以在 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 objects)

提示赞赏。我高度怀疑微软与 Mac/Linux 的世界在这种情况下无法桥接。

4

2 回答 2

4

您应该能够使用 Python 访问 MS SQL Server 数据库(例如 Wonderware Historian 数据库)。

检查事项:

  • 对于 ODBC,“受信任的连接”设置应为“否”。受信任的连接意味着它尝试使用 Windows 身份验证登录。您想改用用户名和密码。我认为对于 OLE DB,您设置了“Integrated Security = SSPI”。
  • 连接字符串(用户名、服务器主机名/IP、数据库名称、正确端口、语法)
  • 端口(确保使用正确的端口 - 可能是非标准端口)
  • 防火墙 - 确保所有防火墙都设置为允许访问
  • 如果您使用主机名,请确保 DNS 正常工作(例如,您可以 ping 服务器吗?)
  • 您可能需要为 Linux 和 pyodbc 安装 ODBC 驱动程序。ODBC 是一个更开放的标准。正如您所指出的,OLEDB 是基于 COM 的(例如基于 Windows),所以我不确定它是否兼容。
于 2017-02-18T19:53:29.813 回答
1

我可以通过 Linux 和 Windows 上的 sqlalchemy 和 pyodbc 使用 Python3 访问 Wonderware 服务器——我没有 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 上运行是另一回事,所以我坚持使用用户/密码组合。

有任何问题欢迎随时提问。

于 2017-11-14T01:53:56.623 回答