きっかけ
Azure SQL DBを構築し、それに対してPythonでクエリを発行するチュートリアルをここに示す。公式ドキュメントにも記載があるのだが、複数の記事に跨っているため、本記事にてまとめておく。
Azure SQL Databaseの構築
まず、Azure上でDB及びDBサーバーを構築する。これに関しては公式チュートリアルにてまとめられているので、そちらを参考にしてほしい。
必要なパッケージのインストール
Pythonでクエリを発行するために必要なパッケージのインストールを行う。なお、Homebrew と Pythonは事前にインストール済みの前提である。もしインストールしていない場合はこちらの記事を参考にすること。
SQLCMDのインストール
SQL DBに対してCLIで実行できるようにSQLCMDをインストールします。
$ brew update
$ brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
$ HOMEBREW_NO_ENV_FILTERING=1 ACCEPT_EULA=Y brew install msodbcsql17 mssql-tools
pyodbcのインストール
Python用のODBC ドライバーであるpyodbcをインストールします。
$ pip install pyodbc
接続情報の確認
DB接続に必要なサーバー名を取得します。
- Azure portalのホーム画面からSQL データベースを選択する(もしくはportal上で検索する)
- 対象のDBを選択し、概要ページを表示する
- サーバー名をコピーする(画像例を載せているが、値は作成者ごとに異なる)
- 下記スクリプトのファイルを作成する。
sqltest.py
import pyodbc
server = '<server>.database.windows.net'
database = '<database>'
username = '<username>'
password = '<password>'
driver= '{ODBC Driver 17 for SQL Server}'
with pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password) as conn:
with conn.cursor() as cursor:
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()
- <>で囲まれた部分は適切な値に書き換える。なお、Azure SQL Databaseの構築チュートリアルを行なってDBを作成していた場合は下記のようになる
- : 先ほど確認したサーバー名(mysqlserver108.database.windows.net)
- : mySampleDatabase
- : azureuser
- : 各自設定したパスワード
- スクリプトを実行する