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のライブラリを使用をやろうと思っていましたが中々うまくいかなかったので、まずはローカルで使用できるか確認の意味でやってみました。