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 として」という意味ですね。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門