< pymysql MSSQL 연결 오류 해결하기 >
파이썬에서 MS-SQL에 연결하는 방법은 pyodbc와 pymssql을 이용하는 방법이 있다(다른 방법도 있다)
ODBC는 이것저것 때문에 그리 선호하지를 않아서 pymssql로 연결을 시도해 본다.
헌데 pymssql을 이용하여 연결을 시도할 경우 Hang 상태로 응답이 없는 일이 발생한다.
처음 사용하는거라 그런지 도저히 안되고, 아무리 구글링을 해도 제대로 설명이 된 곳이 없더라.
일반적으로 설명되어 있는 연결 방법은 다음과 같다.
import pymssql
conn = pymssql.connect(server='servername', user='id', password='password', database='mydb)
print('connected')
테스트에 사용한 환경은...
- python: 3.9.4 / 2.7.18
- pymssql: 2.2.1
일반적인 환경이라면 정상적으로 연결이 되겠지만, 조금 다른 환경이라면 연결이 되지 않는다.
- 기본 포트가 아닌 경우
- MS-SQL버전
MS-SQL은 데이터 전송에 TDS를 이용하는데 이게 버전마다 다르다.
- MSSQL 2005 이하버전: tds version 7.0
- MSSQL 2005 상위버전: tds version 8.0
결론적으로 다음과 같이 설정해야 연결이 된다.
파이썬 버전은 2.7/3.9 모두 정상적으로 연결되었다.
import pymssql
# 기본(mssql 2005 연결)
conn = pymssql.connect(server='192.168.0.5', user='myid', password='mypass', database='mydb', tds_version='7.0')
print ('database connected')
# 포트 설정: 방법1
conn = pymssql.connect(server='192.168.0.5:1434', user='myid', password='mypass', database='mydb', tds_version='7.0')
print ('database connected')
# 포트 설정: 방법2
conn = pymssql.connect(server='my.mycompany.com', port='1434', user='myid', password='mypass', database='mydb', tds_version='7.0')
print ('database connected')
MSSQL이 2005 상위 버전인 겨우 굳이 tds_version을 설정하지 않아도 문제 없이 연결될 듯 한데,
뭐...아직 테스트 안해봐서 그건 모르겠다 ㅎㅎ
끝!
댓글