본문 바로가기
SQL

[Python/MSSQL] Python과 MSSQL 연동하기 (pymssql)

by 빅데이터1020 2021. 5. 20.
SMALL

이번에는 Python과 MSSQL을 연동하는 법을 알아보겠습니다.

 

 

MySQL은 DB 연동할 때 필요한 모듈을 주피터노트북에서 !pip 로 그냥 설치하면 됐었는데

MSSQL은 설치파일을 다운받고 프롬프트나 cmd에서 따로 설정을 해줘야됩니다.

 

근데.... 그 과정이 좀 복잡했어요.............. (왜 또 나만 잘 안되누)

 

 

 

1. pymssql 설치 - MS 공홈

MSSQL 공식 홈페이지에 나와있는 설치 과정은 이렇습니다.

https://docs.microsoft.com/ko-kr/sql/connect/python/pymssql/python-sql-driver-pymssql?view=sql-server-ver15 

 

Python SQL 드라이버 - pymssql - SQL Server

이 가이드에서는 Python, ODBC Driver for SQL Server 및 pymssql 설치에 대해 설명합니다. 예제 코드는 SQL 데이터베이스에 연결하고 상호 작용하는 방법을 보여 줍니다.

docs.microsoft.com

 

step1) 본인 PC에 맞는 pymssql 드라이브 다운받기

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql

 

Python Extension Packages for Windows - Christoph Gohlke

by Christoph Gohlke, Laboratory for Fluorescence Dynamics, University of California, Irvine. Updated on 18 May 2021 at 02:37 UTC. This page provides 32- and 64-bit Windows binaries of many scientific open-source extension packages for the official CPython

www.lfd.uci.edu

 

step2) cmd.exe 열기

 

step3) pymssql 모듈 설치하기

> cd c:\Python27  
> pip install pymssql‑2.1.1‑cp27‑none‑win_amd64.whl

 

근데 전 C:\Python27 폴더가 없고 파이썬은 3.7버전입니다.

디용.....??? 그래서 여기저기 블로그를 보다가 가라(?)로 C:\Python37\Script 를 만들어줬습니다ㅋㅋㅋㅋㅋㅋㅋㅋ

물론 제가 만든 폴더들(Python37, Script)는 빈 깡통이져...ㅋㅋㅋㅋㅋㅋ

 

ㅎㅎㅎ....

 

step3을 진행할 때마다 전 자꾸 에러/경고가 뜨더라구요....

 

 

2. 첫 번째. WARNING 해결하기 - pip upgrade

WARNING 메시지(노랑)를 보니 whl 파일을 설치하려하니 pip 버전이 안 맞는다고 하네요.

이럴 땐 cmd를 관리자권한으로 연 다음에 pip --upgrade pip 을 실행하면 됩니다

 

근데 이것만으로는 ERROR 메시지(빨강)을 해결할 수 없었어요ㅠㅠㅠㅠㅠㅠㅠㅠ

음......... 'whl 파일은 해당 플랫폼에서 지원하지 않는 whl입니다' 라는게 도통 무슨 말인지....ㅋㅋㅋㅋㅋㅋㅋ

 

공홈 cmd 코드랑 한참을 비교해보다가

오... 저는 C:\Python27 폴더가 없Python이 있는 환경(폴더)에 whl 파일을 옮겨봐야겠다는 생각이 들었습니다.

 

 

3. 두 번째. ERROR 해결하기 - Python.exe

Python.exe가 설치되어있는 위치에 있는 Scripts 폴더에 whl 파일을 넣고난 뒤

그 경로로 가서 pip를 실행해봤습니다

오호!!!!!

됩니다ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

 

 

4. Python 에서 MSSQL 데이터베이스 연결한 뒤 테이블 불러오기

# 모듈 불러오기
import pandas as pd
import pymssql

# DB 연결하기
conn = pymssql.connect(server='서버주소', user='user', password='password', database='database')

DB에 연결 했으면 쿼리로 불러옵니다

# DB의 데이터테이블을 dataframe으로 불러오기
data = pd.read_sql(sql='query', con=conn)

# DB 연결 해제
conn.close()
LIST