본문 바로가기
IT/Python

[Python] 오프라인 환경에서 pymssql로 MSSQL 연동하기

by 퐁시냥 2022. 2. 23.

Python에서 MSSQL Server 연동을 위해서는 Python 전용 드라이버를 설치해야 한다. 

연동가능한 드라이버는 두가지인데, pymssqlpyodbc 이다. 

Microsoft 에서 권장하는 드라이버는 pyodbc 라고 하는데, 이번에는 pymssql 로 연동하는 방법을 포스팅하려 한다. 

온라인, 오프라인(폐쇄망) 환경에서 모듈을 설치하는 방법을 공유한다.

 

 

 

1. pymssql 설치

1) 온라인 환경에서 설치

온라인(인터넷) 환경에서의 pymssql 모듈 설치는 매우 간단하다. 

pip install pymssql

 

2) 오프라인 환경에서 설치

오프라인(폐쇄망) 환경에서 pymssql 모듈을 설치하기 위해서는 whl 파일을 온라인(인터넷) 환경에서 다운로드(pip download) 한 후, pip install 명령어로 수동으로 설치해줘야 한다. 

 

먼저 pymssql 모듈을 온라인 환경에서 다운로드한다. 

pip download -d . pymssql

정상적으로 다운로드 되었을 때 커맨드 라인(cmd)에서 보여지는 결과 

python-pip-download-pymssql
python-pip-download-pymssql

# Collecting pymssql
#   Using cached pymssql-2.2.4-cp310-cp310-win_amd64.whl (1.5 MB)
# Saved c:\temp\pymssql\pymssql-2.2.4-cp310-cp310-win_amd64.whl
# Successfully downloaded pymssql

pip download 명령을 실행한 위치에 pymssql-2.2.4-cp310-cp310-win_amd64.whl 파일이 생성된 것을 확인할 수 있다.

pymssql~.whl 파일을 오프라인 환경으로 옮긴 후, whl 파일 위치에서 pymssql을 설치해준다.

pip install --no-index -f . pymssql

참고로 --no-index 의 의미는 아래와 같다. 

-no-index 옵션은 패키지 인덱스를 무시하고 오직 -f, --find-links옵션으로 지정한 URL로 접근하여 다운로드 및 설치 하려는 옵션이다. 즉 —no-index와 -f 옵션은 항상 같이 다닌다.

--no-index Ignore package index (only looking at --find-links URLs instead).
-f, --find-links 
If a url or path to an html file, then parse for links to archives. If a local path or file:// url that's a directory, then look for archives in the directory listing.
 

2. pymssql 스크립트 예제

설치한 pymssql 모듈을 import 한 후, MSSQL Server 정보를 입력하면 쉽게 연동 가능하다. 

 

[MSSQL SERVER 연결 정보]

  • DB 서버명 : host='DB-SERVER-NAME'
  • 연결 계정 ID(SQL SERVER 인증) : user='dbadmin'
  • 연결 계정 PW(SQL SERVER 인증) : password='password'
  • 연결할 데이터베이스 : database='MyDB'
  • 캐릭터 셋 : charset='utf-8' 
# pymssql module import
import pymssql
 
# MSSQL Connection
conn = pymssql.connect(host='DB-SERVER-NAME', user='dbadmin', password='password', database='MyDB', charset='utf8')
 
# Connection 으로 부터 Cursor 생성
cursor = conn.cursor()
 
# Execute SQL
cursor.execute('SELECT * FROM Customer;')
 
# Fetch Statement
row = cursor.fetchone()
while row:
    print(row[0], row[1])
    row = cursor.fetchone()
   
# Disconnection
conn.close()

참고로 row[0]은 테이블의 0번째 컬럼, row[1]은 1번째 컬럼이므로 다른 컬럼을 출력하려면 row[컬럼번호]로 호출 가능하다.

 

 

참고

'IT > Python' 카테고리의 다른 글

[Python] IntelliJ에서 Flask 설치하고 실행하기  (0) 2022.03.03

댓글