본문 바로가기
IT

python(파이썬) DBMS 접근하기 - pyodbc 설치 및 사용법, 접속 및 SQL 수행

by developer's warehouse 2024. 2. 20.

파이썬을 이용해서 DBMS에 접근하는 편리한 인터페이스 중 pyodbc라는 라이브러리가 있습니다. 오늘은 이 pyodbc에 대해서 알아보도록 하겠습니다.

python(파이썬) DBMS 접근하기 - pyodbc 설치 및 사용법, 접속 및 SQL 수행 썸네일

1. pyodbc란?

pyodbc는 ODBC 데이터베이스에 간편하게 액세스할 수 있는 오픈 소스 Python 모듈입니다. DB API 2.0 사양을 구현하지만 훨씬 더 많은 파이썬 편의 기능이 포함되어 있습니다. 이 모듈은 DB API 2.0 사양을 구현하며, Pythonic 편의성을 더욱 강화하였습니다.

pyodbc는 github에 소스가 공개되어있습니다. 소스는 아래에서 확인하실 수 있습니다.

https://github.com/mkleehammer/pyodbc/

마이크로소프트도 이 pyodbc의 오픈소스 커뮤니티에 기여한다고 합니다. 아래와 같이 공식 사이트에 기재되어있습니다.

 

PyODBC는 커뮤니티에서 지원하는 소프트웨어입니다. Microsoft는 pyODBC 오픈 소스 커뮤니티에 기여하며 https://github.com/mkleehammer/pyodbc/. 그러나 Microsoft는 이 소프트웨어에 대한 지원을 제공하지 않습니다.참고: https://learn.microsoft.com/ko-kr/sql/connect/python/pyodbc/python-sql-driver-pyodbc?view=sql-server-ver16

 

2. pyodbc 설치방법

pyodbc는 pip를 이용하여 쉽게 설치할 수 있습니다. 아래의 명령을 수행하면 설치가 가능합니다.

python -m pip install pyodbc

 

3. pyodbc로 DBMS 연결하기

ODBC를 사용하는 DBMS에는 pyodbc를 이용하여 접근이 가능합니다.

예를들어 pyodbc를 이용하여 SQL 서버에 연결하는 방법은 다음과 같습니다.

1. pyodbc 패키지를 import합니다.

import pyodbc

 

2. 연결에 필요한 자격 증명을 변수로 생성합니다.

SERVER = '<server-address>'
DATABASE = '<database-name>'
USERNAME = '<username>'
PASSWORD = '<password>'

 

 

3. 문자열을 서로 연결하여 사용하여 연결 문자열(connection string) 변수를 생성합니다.

connectionString = f'DRIVER={ {ODBC Driver 18 for SQL Server}};SERVER={SERVER};DATABASE={DATABASE};UID={USERNAME};PWD={PASSWORD}'

 

4. pyodbc.connect 함수를 사용하여 SQL 데이터베이스에 연결합니다.

conn = pyodbc.connect(connectionString)

 

4. SQL 실행하기

 

SQL 쿼리 문자열을 사용하여 쿼리를 실행하고 결과를 파싱하는 방법은 다음과 같습니다.

1. SQL 쿼리 문자열을 위한 변수를 생성합니다.

SQL_QUERY = \"\"\" 
SELECT c.CustomerID, c.CompanyName, COUNT (soh.SalesOrderID) AS OrderCount 
FROM SalesLT.Customer AS c 
LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh 
ON c.CustomerID = soh.CustomerID 
GROUP BY c.CustomerID, c.CompanyName 
ORDER BY OrderCount DESC; 
\"\"\"

 

2. cursor.execute를 사용하여 데이터베이스에 대한 쿼리에서 result set을 검색합니다.

cursor를 이용하여 실행하면 cursor에 result set이 저장됩니다.

cursor = conn.cursor()
cursor.execute(SQL_QUERY)

 

 

3. cursor.fetchall과 foreach 루프를 사용하여 데이터베이스에서 모든 레코드를 가져옵니다.

cursor를 통해 레코드를 출력합니다.

records = cursor.fetchall()
for r in records:
    print(f"{r.CustomerID}\t{r.OrderCount}\t{r.CompanyName}")

 

 

결론

오늘은 기본적인 내용을 통해 pyodbc에 대해 알아보았습니다. 실제로는 이보다 더 많은 기능과 사용 방법이 있으니, 아래 링크를 참고하여 필요에 따라 추가적인 학습을 진행하시는 것을 권장드립니다

https://github.com/mkleehammer/pyodbc/wiki

facebook twitter kakaoTalk kakaostory naver band shareLink