PythonでODBC接続を可能にするpyodbcのインストール

PythonでODBC接続を可能にするpyodbcのインストール プログラミング

「PythonでODBC接続を行いたい」
「PythonからSQL Serverにアクセスしたい」

このような場合には、pyodbcがオススメです。
この記事では、pyodbcについて解説しています。

本記事の内容

  • pyodbcとは?
  • pyodbcのシステム要件
  • pyodbcのインストール
  • pyodbcの動作確認

それでは、上記に沿って解説していきます。

pyodbcとは?

pyodbcとは、ODBCによるデータベース接続のためのPythonライブラリです。
また、pyodbcはDB API 2.0仕様に基づいて実装されています。

ODBCは、そもそもMicrosoft社が制定したものです。
そのため、Windowsで動作するデータベース関連で用いられます。

その代表例としては、SQL Serverが挙げられます。
ある意味、pyodbcはSQL Server専用と言っても過言ではありません。

今では、Microsoft社はLinuxで動くSQL Serverを公開しています。

以上、pyodbcについて説明しました。
次は、pyodbcのシステム要件を説明します。

pyodbcのシステム要件

現時点(2022年7月)でのpyodbcの最新バージョンは、4.0.34となります。
この最新バージョンは、2022年7月15日にリリースされています。

pyodbcのシステム要件では、以下がポイントとなります。

  • OS
  • Pythonバージョン
  • unixODBC

それぞれを下記で説明します。

OS

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

Pythonバージョン

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 2.7
  • Python 3.6
  • Python 3.7
  • Python 3.8
  • Python 3.9
  • Python 3.10

このサポート状況は、以下のPython公式開発サイクルには準拠していません。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

2021年末でPython 3.6もサポート期限が終了しています。
そのため、2022年以降ではPython 3.7以降に対応していればOKです。

その点、pyodbcは幅広くメンテナンスしていると思います。
しかし、その分だけ処理やセキュリティの面でデメリットもあるでしょう。

個人的には、Python 3.6以前は切り捨てでよいと思います。

unixODBC

名前からわかるように、これにWindowsは関係ありません。
macOSとLinuxにおいて、注意すべきポイントになります。

unixODBCのインストール方法は、各OS毎に異なります。
詳細は、次のページで記載されています。
https://github.com/mkleehammer/pyodbc/wiki/Install

ここでは、Ubuntuのケースを載せておきます。
pyodbcのインストールの前に、次のコマンドを実行する必要があります。

sudo apt install unixodbc-dev

なお、Pythonは別途インストール済みという前提になります。
Ubuntuに初期でインストールされているPythonを利用するのはNGです!!

以上、pyodbcのシステム要件を説明しました。
次は、pyodbcのインストールを説明します。

pyodbcのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.1.2
setuptools 63.2.0
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、pyodbcのインストールです。
pyodbcのインストールは、以下のコマンドとなります。

pip install pyodbc

pyodbcのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package    Version
---------- -------
pip        22.1.2
pyodbc     4.0.34
setuptools 63.2.0
wheel      0.36.2

依存するパッケージは、ありません。
これであれば、既存環境へは影響をほとんど与えずにpyodbcを導入できます。

以上、pyodbcのインストールを説明しました。
次は、pyodbcの動作確認を説明します。

pyodbcの動作確認

pyodbcの動作確認を行うには、接続先のデータベースが必要になります。
さらに、そのデータベース用のODBCも必要です。

今回は、SQL Serverを接続先データベースとして動作確認を行います。
SQL Serverのインストールは、次の記事で解説しています。

そして、SQL Server用のODBCは次の記事に従えばインストールできます。
mssql-toolsは、最低限で必要なツールです。

今回は、すべて同じマシンにインストールします。
SQL Serverのサーバーとクライアントの両方を同じマシンにインストールという意味です。

データベースのサーバーとクライアントについて、よくわからない場合は次の記事をご覧ください。

ここまでの準備はできたでしょうか?
準備が整ったら、次のコードで動作確認を行います。

import pyodbc

server = "localhost"
database = "master"
user = "sa"
password = "Password1@"

con = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' + server + ';DATABASE=' + database + ';UID=' + user + ';PWD=' + password + ';')
cursor = con.cursor()
cursor.execute("SELECT @@version;")
row = cursor.fetchone()

while row:
    print(row)
    row = cursor.fetchone()

cursor.close()

上記コードを実行すると、次のような結果が表示されます。

Microsoft SQL Server 2022 (CTP2.0) - 16.0.600.9 (X64) 
        May 20 2022 13:29:42 
        Copyright (C) 2022 Microsoft Corporation 
        Express Edition (64-bit) on Linux (Ubuntu 20.04.4 LTS) <X64>

このように表示されれば、pyodbcの動作確認はOKです。
なお、データベースへの接続情報は各自の環境に合わせて変更してください。

ドライバーに関しては、次のファイルの内容に基づいています。

/etc/odbcinst.ini

[ODBC Driver 17 for SQL Server] 
Description=Microsoft ODBC Driver 17 for SQL Server 
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.1.1 
UsageCount=1

この内容は、Microsoft ODBC 17(msodbcsql17)インストール時に自動的に追記されています。

以上、pyodbcの動作確認を説明しました。

タイトルとURLをコピーしました