728x90

파이썬(Python)을 사용하여 애저(Azure) 데이터베이스 쿼리 실습하기

들어가며

  • 파이썬(Python)을 사용하여 애저(Azure)에 올린 데이터베이스를 쿼리해보자.
  • 이번 실습은 이전의 글(https://dev-astra.tistory.com/387)에 이어서 진행한다.

 

실습하기

OCBC 드라이버 설치하기

  • 파이썬에서 @mssql@로 연결하는 방법은 일반적으로 @pyodbc@와 @pymssql@이 있으며, 이번 실습에서는 @pyodbc@를 사용한다.
  • 윈도우(Windows)의 경우, 아래의 ODBC 드라이버를 설치한다.
 

SQL Server용 ODBC 드라이버 다운로드 - ODBC Driver for SQL Server

Microsoft ODBC Driver for SQL Server를 다운로드하여 SQL Server 및 Azure SQL Database에 연결하는 네이티브 코드 애플리케이션을 개발합니다.

learn.microsoft.com

 

  • 필요한 경우 Visual C++ 재배포 패키지도 설치한다.
  • 윈도우 외의 OS는 아래 문서를 참고한다.
 

1단계: Pyodbc Python 환경 구성 - Python driver for SQL Server

이 시작 가이드의 1단계에는 Python, Microsoft ODBC Driver for SQL Server 및 pyODBC를 개발 환경에 설치하는 작업이 포함됩니다.

learn.microsoft.com

 

  • 파이썬 Azure SQL Database의 데이터베이스를 자세히 살펴보려면 아래 문서를 참고한다.
 

Home

Python ODBC bridge. Contribute to mkleehammer/pyodbc development by creating an account on GitHub.

github.com

 

pyodbc 설치하기

  • 다음 명령을 실행하여 원격으로 @pyodbc@를 설치한다.
> pip install pyodbc

명령을 입력하여 pyodbc를 설치하는 모습

 

SQL 데이터베이스에 연결하기

  • 텍스트 편집기에서 @sqltest.py@라는 새 파일을 만든다.
  • 각각의 변수들에 데이터베이스 연결 정보를 입력한다.
import pyodbc

server = 'your_server.database.windows.net'
database = 'mySampleDatabase'
username = 'your_username'
password = 'your_password'
driver= '{ODBC Driver 18 for SQL Server}'

cnxn = pyodbc.connect('DRIVER=' + driver + '; PORT=1433; SERVER=' + server + ';PORT=1443; DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
cursor = cnxn.cursor()

 

  • 각각의 변수들에 넣을 값들은 애저 포털에서 배포한 데이터베이스 리소스 페이지에서 확인할 수 있다.

 

  • 각각의 변수들에 값을 넣은 후, 파이썬 코드를 실행시킨다.

 

쿼리 실행하기

  • @sqltest.py@ 파일에 다음 코드를 추가하여 실행한다.
cursor.execute("SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName FROM [SalesLT].[ProductCategory] pc JOIN [SalesLT].[Product] p ON pc.productcategoryid = p.productcategoryid")
row = cursor.fetchone()
while row:
    print (str(row[0]) + " " + str(row[1]))
    row = cursor.fetchone()

 

행 삽입하기

  • @sqltest.py@ 파일에 다음 코드를 추가하여 실행한다.
count = cursor.execute("""
    INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) 
    VALUES (?, ?, ?, ?, GETDATE())""",
    'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0).rowcount
cnxn.commit()
print('Rows inserted: ' + str(count))

 

더보기
  • 원래는 다음과 같이 MS Learn 사이트에서 주어진 예시 코드를 넣어 실행하려고 하였으나, @NameError: name 'CURRENT_TIMESTAMP' is not defined@ 오류가 출력되었다.
#Sample insert query
count = cursor.execute("""
    INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) 
    VALUES (?,?,?,?,?)""",
    'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0, CURRENT_TIMESTAMP).rowcount
cnxn.commit()
print('Rows inserted: ' + str(count))

 

  • @CURRENT_TIMESTAMP@는 SQL 서버에서 현재 시간을 가져오는 내장 함수인데, @CURRENT_TIMESTAMP@가 정의되지 않았기 때문에 발생하는 오류인 것이다.
  • 이 문제를 해결하기 위해서 @CURRENT_TIMESTAMP@를 문자열로 쿼리에 포함시켰다. (다음과 같이 @execute@ 함수의 @SellStartDate@ 매개변수의 값으로 @GETDATE()@ 함수를 사용하여 현재 날짜와 시간으로 설정하도록 변경했다.)
count = cursor.execute("""
    INSERT INTO SalesLT.Product (Name, ProductNumber, StandardCost, ListPrice, SellStartDate) 
    VALUES (?, ?, ?, ?, GETDATE())""",
    'SQL Server Express New 20', 'SQLEXPRESS New 20', 0, 0).rowcount
cnxn.commit()
print('Rows inserted: ' + str(count))

 

@pyodbc@ 샘플 실습해보기

  • 아래의 사이트에 있는 @pyodbc@ 샘플을 실습해본다.
 

Getting started

Python ODBC bridge. Contribute to mkleehammer/pyodbc development by creating an account on GitHub.

github.com

 

참고 사이트

 

Python을 사용하여 데이터베이스 쿼리 - Azure SQL Database & SQL Managed Instance

이 문서에서는 Python을 사용하여 Azure SQL Database의 데이터베이스에 연결하고 Transact-SQL 문을 사용하여 쿼리하는 프로그램을 만드는 방법을 보여줍니다.

learn.microsoft.com

 

1단계: Pyodbc Python 환경 구성 - Python driver for SQL Server

이 시작 가이드의 1단계에는 Python, Microsoft ODBC Driver for SQL Server 및 pyODBC를 개발 환경에 설치하는 작업이 포함됩니다.

learn.microsoft.com

 

SQL Server용 Python 드라이버 - Python driver for SQL Server

Windows, Linux 또는 macOS에서 Python을 사용하여 SQL Database에 연결합니다.

learn.microsoft.com

 

3단계: pyodbc를 사용하여 SQL에 연결 - Python driver for SQL Server

3단계는 Python 및 pyODBC를 사용하여 SQL Server에 연결할 수 있는 방법을 보여 주는 개념 증명입니다. 기본 예제에서는 데이터를 선택하고 삽입하는 방법을 보여 줍니다.

learn.microsoft.com

 

Getting started

Python ODBC bridge. Contribute to mkleehammer/pyodbc development by creating an account on GitHub.

github.com

 

 

728x90