2017-02-01 5 views
1

누구든지 OSX (또는 Linux)에서 python3을 사용하여 Wonderware의 Historian과 기능적 연결 방법을 공유 할 수 있습니까?python 3 및 OSX 또는 Linux를 사용하여 Wonderware Historian OLE DB에 연결

Historian은 분명히 Microsoft SQL Server OLE DB입니다 (pg102 : http://www.logic-control.com/datasheets/1/Historian/HistorianConcepts.pdf 참조).

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)) 

:

또 다른 SO 포스트는 OLE DB에 연결 할 수있는 유일한 파이썬 라이브러리 'adodbapi'(Connecting to Microsoft SQL server using Python)

코드에서 시도 (기본 RO 자격 증명을 사용하여) 인 것을 제안한다 오류 :

adodbapi.apibase.OperationalError: (InterfaceError("Windows COM Error: Dispatch('ADODB.Connection') failed.",)... 

오류는 pywin32 패키지가 없거나 사용할 수 없기 때문에 발생합니다. 이는 분명히 바람입니다. 빚진 사람 (Pywin32 (com objects) on Mac)

팁 감사드립니다. 필자는 마이크로 소프트 대 맥/리눅스 세계가이 상황에서 가교 될 수 없다고 크게 의심한다.

답변

3

Python을 사용하여 MS SQL Server 데이터베이스 (예 : Wonderware Historian 데이터베이스)에 액세스 할 수 있어야합니다.

확인 사항 :

ODBC를 들어
  • , "신뢰할 수있는 연결"설정이 "아니오"를해야합니다. 신뢰할 수있는 연결은 Windows 인증을 사용하여 로그인하려고한다는 것을 의미합니다. 대신 사용자 이름과 암호를 사용하려고합니다. 나는 OLE DB를 "Integrated Security = SSPI"로 설정했다고 생각합니다.
  • 연결 문자열 (사용자 이름, 서버 호스트 이름/IP, 데이터베이스 이름, 올바른 포트, 구문)
  • 포트 (올바른 포트를 사용하십시오 - 비표준 포트 수 있음)
  • 방화벽 - 있는지 확인
  • 호스트 이름을 사용하는 경우 DNS가 작동하는지 확인하십시오 (예 : 서버에 ping을 수행 할 수 있습니까?)
  • Linux 및 pyodbc 용 ODBC 드라이버를 설치해야 할 수 있습니다. 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에서 실행하는 것은 다른 이야기이므로 사용자/비밀번호 조합을 유지합니다.

기타 질문은 언제든지 물어보십시오.