pymssql による MS SQL Server の利用
pymssql を使うと Python から Microsoft SQL Server へのクエリーなどを実行することが出来ます。
pymssql は FreeTDS 上に構築されている SQL Server 用のシンプルなインターフェイスです。ライセンスは LGPL で配布されています。
ちなみに FreeTDS というのは Unix/Linux から、SQL Server のネイティブのプロトコルである TDS を利用するためのライブラリです。
オープンソースソフトウェアとして開発され、こちらも pymssql と同様に LGPL ライセンスの元配布されています。
» pymssql.org - pymssql のウェブサイト
ここでは簡単な使い方をみてみましょう。
pymssql のインストール確認
Python のコマンドラインから import pymssql として何もエラーが発生しなければ OK です。
>>> import pymssql >>>
"No module named pymssql" などのエラーが発生する場合には正しくインストールされていませんのでインストールしてください。
バイナリパッケージは UCI (カリフォルニア大学アーバイン校) のサイトからダウンロードできます。
» 非公式 Python 拡張パッケージの Windows バイナリー (Unofficial Windows Binaries for Python Extension Packages)
クエリーの実行例
MS SQL Server のサンプルデータベース Northwind の Employees テーブルから LastName が D から始まる Employee の情報を引き出してみましょう。
from os import getenv
import pymssql
conn = pymssql.connect(
'ホスト名', 'ユーザー名', 'パスワード', 'Northwind')
cursor = conn.cursor()
cursor.execute("""
SELECT EmployeeID, FirstName, LastName
FROM Employees
WHERE LastName LIKE %s""", 'D%')
row = cursor.fetchone()
while row:
print("%d, %s %s" % (row[0], row[1], row[2]))
row = cursor.fetchone()
conn.close()
上記でホスト名は SQL Server のホスト名。ローカルホストなら . (ドット) 等です。ユーザー名とパスワードはデータベースへのログイン情報です。
上記では行情報にアクセスする場合に、カラムのインデックスを使用しています。もしカラム名を使う場合には、cursor のオプションで as_dict=True とします。
...
conn = pymssql.connect(...)
cursor = conn.cursor(as_dict=True)
cursor.execute("""
SELECT EmployeeID, FirstName, LastName
FROM Employees
WHERE LastName LIKE %s""", 'D%')
row = cursor.fetchone()
while row:
print("%d, %s %s" % (
row['EmployeeID'],
row['FirstName'],
row['LastName']))
row = cursor.fetchone()
conn.close()
念のため言えば as_dict (as dict(ionary)) というのは 「Dictionary として」という意味ですね。