カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

pyodbcを使用してPythonからEC2上のSQL Serverに接続する

PythonからSQL Serverに接続したい場合、いくつか使用可能なPythonライブラリがありますが、今回はそのうちpyodbcを使用してEC2上のSQL Serverに接続してみたいと思います。

実施作業

前提

  • 操作端末はWindows 10
  • Pythonシェルの実行はWSL
  • EC2はSQL Server込みのもので構築済み
  • python3.7はインストール済み
  • SQL Serverに接続可能なユーザは作成済み
  • 操作端末からEC2上のSQL ServerにアクセスできるようにSGを許可済み


pyodbcのインストール

pythonの仮想環境を作成し、pipコマンドでpyodbcをインストールする

$ python -m venv venv
$ .\venv\Scripts\activate
$ pip install pyodbc
Collecting pyodbc
  Using cached pyodbc-4.0.30-cp37-cp37m-win_amd64.whl (67 kB)
Installing collected packages: pyodbc
Successfully installed pyodbc-4.0.30
$ pip list
Package    Version
---------- -------
pip        20.3.3
pyodbc     4.0.30
setuptools 47.1.0


実行pythonシェル作成

SQL Serverに接続するためのpythonシェルを作成します。
※接続先DBは以下から事前に構築しておきます。
 →AdventureWorks サンプルデータベース - SQL Server | Microsoft Docs

import pyodbc

def login():
    # インスタンス
    instance = "XXX.XXX.XXX.XXX"

    # ユーザー
    user = "XXXX"

    #パスワード
    pasword = "xxxxxxxx"

    #DB
    db = "AdventureWorksLT2016"
    connection = "DRIVER={SQL Server};SERVER=" + instance + ";uid=" + user + \
                 ";pwd=" + pasword + ";DATABASE=" + db
    print(connection)
    return pyodbc.connect(connection)

if __name__ == '__main__':
    con = login()


Pythonシェル実行

作成したPythonシェルを実行し、SQL Serverとのコネクションが作成されていることを確認します。

$ python sqlcon_function.py
DRIVER={SQL Server};SERVER=54.178.62.93;uid=sa;pwd=j8daRNBx;DATABASE=AdventureWorksLT2016


感想及び所感

本当はLambdaでpyodbcのライブラリを使用をやろうと思っていましたが中々うまくいかなかったので、まずはローカルで使用できるか確認の意味でやってみました。