Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Python

Python環境にpyodbcをインストールしてSQLServerに接続する手順

投稿日:2020年10月22日 更新日:

<目次>

(1) PythonにpyodbcをインストールしてSQLServerに接続する手順
 (1-1) 手順1:ODBCドライバのインストール
 (1-2) 手順2:pythonパッケージの導入
 (1-3) 手順3:疎通テスト
(2) エラー対処
 (2-1) エラー概要
 (2-2) エラー原因
 (2-3) エラー対処
(3) その他メモ

(1) PythonにpyodbcをインストールしてSQLServerに接続する手順

手順は大きく2つに分かれています。
「手順1」では「ODBCドライバー」のインストールを行います。ODBCドライバーはクライアントがDBと連携するためのモジュール(DLL)で、DBに対してSQLを連携して結果を受け取る等の仲介を行います。
「手順2」では「pyodbcライブラリ」のインストールを行います。pyodbcはPythonのライブラリで、DB接続に必要となるDBAPIの仕様を実装したモジュール(DLL)です。
この2つの手順を経る事で『PythonのプログラムからSQLServerのデータベースにアクセスしてSQLを発行する事』が可能になります。

ODBCドライバーとアプリやデータベースの関係性については別記事で整理しています。
⇒(★作成中)

(1-1) 手順1:ODBCドライバのインストール

前半部分に相当するODBCドライバーのインストール手順を紹介します。
(※ただし、画面等は2020年1月時点のため実際と異なる場合がございますのでご留意ください)

①ドライバーのダウンロード
Microsoftの下記サイトにアクセスし「~ODBC Driver 17 for SQL Server ~をダウンロード」と書かれたリンクを選択します。
https://docs.microsoft.com/ja-jp/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15

(図111)①


②Downloadを押下します。
(図111)②


③ご自身のOSバージョンに合ったインストーラを選択します(32bitならx86を、64bitならx64を選択)
(図111)③


④ダウンロードが開始されます。
(図111)④


⑤資源(.msiファイル)をインストール先のサーバに配置して実行します(ダブルクリック)。
(図111)⑤


⑥インストーラの案内に沿ってインストールを進めます。
(図111)⑥


⑦ライセンス条件がOKならNextを押下
(図111)⑦


⑧インストールしたい機能を選択します。
(図111)⑧


⑨インストールに伴うディスクの使用量を確認します。
(図111)⑨


⑩「Install」を押下してインストールを開始します。
(図111)⑩


(図111)⑪進行中


(図111)⑫完了

(1-2) 手順2:pythonパッケージの導入

①pyodbc資源のダウンロード
PyPIページにアクセスして、pyodbcのパッケージをダウンロードします。
https://pypi.org/project/pyodbc/

(図121)①


②「pyodbc-X.X.XX.tar.gz」ファイルをダウンロードします。
(図121)②


③ダウンロードした資源をインストール先のサーバに配備して実行します。
(図121)③

④インストールの開始
まずはpyodbcのダウンロード済みパッケージがある階層まで移動します(~\pyodbc\srcなど各自のパス)。移動できたらpipコマンドを実行します。

# pip install pyodbc_4.0.2.tar.gz

 (図121)④移動できたらdirコマンドでファイルの存在をチェック



(図121)⑤pipコマンドの実行


(図121)⑥インストール完了

(1-3) 接続テスト

最後に接続テストとして、PythonのプログラムからSQLServerのテーブルにアクセスできるか?を確認します。

Python側で次の例のようなサンプルプログラムを実行して、疎通チェックを行います。

(サンプルプログラム)

import pyodbc

def DbConnection():
    driver='{SQL Server}'
    server='[DB IP address]'
    database='[Database Name]'
    uid='[DB User]'
    pwd='[DB Password]'
    cnxn=pyodbc.connect('DRIVER='+driver+';SERVER='+server+';DATABASE='+database+';UID='+uid+';PWD='+pwd+';')
    cursor=cnxn.cursor()
    sql="SELECT * FROM dbo.spt_monitor"
    cursor.execute(sql)
    row=cursor.fetchone()
    while row:
        print(row[0])
        row=cursor.fetchone()
    cursor.close()

def main():
    DbConnection()
    pass

if __name__ == '__main__':
    main()

(図121)⑦
プログラムを実行した結果、データベースのテーブル内容がPythonの実行結果に表示されています。

目次にもどる

(2) エラー対処

(2-1) エラー概要

もし次のようなエラーが出た場合の対処についても触れておきます。

(図131)①

(エラーメッセージ例)

copying build\lib.win-amd64-3.7\pyodbc.cp37-win_amd64.pyd -> c:\program files (x86)\microsoft visual studio\shared\python37_64\Lib\site-packages
    error: could not create 'c:\program files (x86)\microsoft visual studio\shared\python37_64\Lib\site-packages\pyodbc.cp37-win_amd64.pyd': Permission denied

目次にもどる

(2-2) エラー原因

メッセージの最後の部分にあるように、Permission Deniedつまり権限の不足が原因です。具体的にはエラーメッセージに書かれているパス(上記の例では「c:\program files (x86)\microsoft visual studio\shared\python37_64」へのアクセス権限が不足している事が読み取れます)。

目次にもどる

(2-3) エラー対処

インストールを実行するユーザに上記のフォルダのアクセス権限を付与する等の対応により、事象が解決する可能性があります。

(図131)②

目次にもどる

(3) その他メモ

もしかすると「VC_redist_x64.exe」も必要かも知れません。
https://github.com/mkleehammer/pyodbc/issues/663

インストールする場合は次の記事もご参考頂けたらと思います。
https://rainbow-engine.com/pandas-unicode-encodeerror/

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Python

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Bing AIのAPIを疎通(HelloWorld)

  <目次> (1) Bing AIのAPIを疎通(HelloWorld)  やりたいこと/概要  前提条件  STEP1:Bing Web Search APIにサインアップ  STEP2 …

PythonでSQLAlchemyを使ってOracleDBに接続する際に遭遇したエラーとその対処方法

本記事は次の記事の続編です。 (下記記事の手順を実行する際に遭遇したエラーについての備忘録) PythonでSQLAlchemyを使ってOracleDBに接続する方法 (0) 目次 (4) エラー対応 …

Pythonで「ERROR: Could not install packages due to an OSError: [WinError 2]」が出た時の原因と対処方法について

  <目次> (1) Pythonで「ERROR: Could not install packages due to an OSError: [WinError 2]」が出た時の原因と対処 …

no image

PythonでJSON形式データの値を取得する手順について

  <目次> (1) PythonでJSON形式データの値を取得する手順について  (1-1) サンプル①:ローカルのJSONファイルの読み込み(単純構造)  (1-2) サンプル②:ローカ …

Pythonパッケージインストール(pip install)をオフラインで行う方法

<目次> (1) Pythonパッケージインストール(pip install)をオフラインで行う方法  (1-1) オフラインインストールとは? (2) オフラインインストールの手順(要Cコンパイルの …

  • English (United States)
  • 日本語
Top