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

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

関連記事

PythonでHTTP Error 403: Forbiddenエラーが出た時の対処方法とエラーの意味について

(0)目次&概説 (1) エラー:HTTP Error 403: Forbidden  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処方法   (1-3-1) 修正前の …

Pythonのコンストラクタの基礎と「self」や「__init__」について

<目次> (1) Pythonのコンストラクタの基礎と「self」や「__init__」について  (1-1) 「__init__」やコンストラクタについて  (1-2) コンストラクタで使われる「s …

PythonのFlaskフレームワークを用いたRest APIのサンプル

  <目次> (1) PythonのFlaskフレームワークを用いたRest APIのサンプル  (1-1) Flaskとは  (1-2) STEP1:Flaskフレームワークの導入  (1 …

Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)

  <目次> (1) Slackでコマンドを作る方法をご紹介(自作スラッシュコマンド)  (1-0) やりたいこと  (1-1) STEP1:Slackボットの開発(所要時間:60分)  ( …

Bing AIのAPIを疎通(HelloWorld)

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

  • English (United States)
  • 日本語
Top