2017-02-01 12 views
1

OSX(またはLinux)上でpython3を使用して誰かがWonderwareのHistorianに機能的な接続方法を共有できますか?python 3とOSXまたはLinuxを使用してWonderware Historian OLE DBに接続

ヒストリアンは明らかにMicrosoft SQL ServerのOLE DBです(http://www.logic-control.com/datasheets/1/Historian/HistorianConcepts.pdfのpg102を参照)。

別SOポストは、OLE DBに接続することができる利用可能な唯一のPythonライブラリが 'adodbapi'(Connecting to Microsoft SQL server using Python

(デフォルト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)) 

これはエラーを出します:

エラーはpywin32パッケージが存在しないことが原因である可能性があります。これは明らかにWindですお返事のみ(Pywin32 (com objects) on Mac

ヒントありがとうございます。私は、MicrosoftとMac/Linuxの世界がこの状況では橋渡しできないことを強く疑う。

答えて

3

PythonでMS SQL Serverデータベース(Wonderware Historianデータベースなど)にアクセスできるはずです。チェックする

もの:ODBCの場合

  • 、 "信頼された接続" の設定が "いいえ" でなければなりません。信頼できる接続とは、Windows認証を使用してログインしようとすることを意味します。代わりにユーザー名とパスワードを使用します。私はあなたの代わりに "統合セキュリティ= SSPI"を設定するOLE DBのためだと思います。
  • 接続文字列(ユーザー名、サーバーのホスト名/ IP、データベース名、正しいポート、構文)
  • ポート(あなたが正しいポートを使用してください - 非標準のポートでもよい)
  • ファイアウォール - そのことを確認してください
  • Linux用のODBCドライバとpyodbcをインストールする必要があるかもしれません。たとえば、次のように入力します。hostnameを使用している場合は、DNSが機能していることを確認します。 ODBCはよりオープンな標準です。あなたが指摘したように、OLEDBはCOMベース(Windowsベースなど)なので、互換性があるかどうかはわかりません。
1

LinuxとWindowsの両方でsqlalchemyと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上での実行は別の話ですので、私はユーザーとパスワードのコンボを保ちます。

その他のご質問はお気軽にお問い合わせください。

関連する問題