首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python 3和OSX或Linux连接到Wonderware历史学家OLE DB

使用python 3和OSX或Linux连接到Wonderware历史学家OLE DB
EN

Stack Overflow用户
提问于 2017-02-01 01:31:29
回答 1查看 3.8K关注 0票数 1

有人能在OSX (或linux)上使用python3与Wonderware的历史学家共享一种功能连接方法吗?

历史学家显然是Microsoft (参见pg102 of http://www.logic-control.com/datasheets/1/Historian/HistorianConcepts.pdf)。

另一篇这样的文章建议,唯一能够连接到OLE DB的python库是'adodbapi‘(Connecting to Microsoft SQL server using Python)。

在代码中尝试(使用默认的RO凭据):

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

这就产生了一个错误:

代码语言:javascript
复制
adodbapi.apibase.OperationalError: (InterfaceError("Windows COM Error: Dispatch('ADODB.Connection') failed.",)...

此错误可能是由于pywin32包的缺位和不可用所致,该包显然仅适用于Windows (Pywin32 (com objects) on Mac)

小费很受欢迎。我高度怀疑,在这种情况下,微软和Mac/Linux之间的关系是无法沟通的。

EN

回答 1

Stack Overflow用户

发布于 2017-11-14 01:53:56

我可以通过sqlalchemy和pyodbc在Linux和Windows上使用Python3来访问Wonderware服务器--我没有Mac,所以你只能靠自己了。我已经读到有其他的司机可用,但我没有任何经验与他们。如果你在这里有什么建议的话,我很高兴听到它们。

这就是我如何模块化pyodbc的功能。实际上,我在代码中定义了一个函数,用于设置sql引擎连接:

代码语言:javascript
复制
def get_conn():
    conn_pyodbc = pyodbc.connect(DSN=<myDSN>, UID=<user>, PWD=<pass>)
    return conn_pyodbc

我用这种连接来表示:

代码语言:javascript
复制
def executeQuery(sql_query):
    with get_conn() as conn:
        df = pd.read_sql(sql_query, conn)

使用上下文管理器似乎是处理打开和关闭数据库连接的更简单的方法。

至于设置DSN,我需要安装Microsoft驱动程序,这很容易完成,我在网上找到了一些链接。安装成功后,我手动编辑了/etc/odbc.init和/etc/odbcinst.ini文件,使它们现在看起来如下所示:

代码语言:javascript
复制
$ cat /etc/odbc.ini 
[myDSN]
Driver=ODBC Driver 13 for SQL Server
Description=Awesome server
Trace=No
Server=<serverIP>

代码语言:javascript
复制
$ 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上运行是另一回事,所以我坚持用户/密码组合。

再问几个问题就好了。

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

https://stackoverflow.com/questions/41970482

复制
相关文章

相似问题

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