Rainbow Planet

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のdatapackageとSQLAlchemy、SQLiteを使ってcsvデータをSELECTする

(0)目次&概説 (1) 今回の目的  (1-1) 目的  (1-2) 前提条件 (2) 実施手順  (2-0) 事前作業  (2-1) データ(csv)のロード  (2-2) エンジンの作成  (2 …

Pythonでcsvのカラム名を変更する方法(Pandasのread_csvで読み込んだcsvのカラム名変更)

<目次> (1) Pythonでcsvのカラム名を変更する方法  (1-1) 構文①  (1-2) サンプルプログラム①  (1-3) 構文②  (1-4) サンプルプログラム② PythonのPan …

PythonにOpenCVを導入して画像を読込み&表示&拡大縮小してみる

(0)目次&概説 (1) OpenCVとは (2) OpenCVのインストール  (2-1) インストール資源の入手  (2-2) インストール時の注意事項  (2-3) インストールの実行 (3) …

PythonのSQLAlchemyで「ArgumentError : Could not parse rfc1738 URL」エラーや「InvalidRequestError: Could not reflect: requested tables(s)」エラーが出た時の対処について

(0)目次&概説 (1) エラー対応1:sqlalchemy.exc.ArgumentError  (1-1) 発生状況・エラーメッセージ   (1-1-1) エラーメッセージ   (1-1-2) エ …

no image

Pythonでcsvを読み込んでデータベース化する方法~pandasのto_sqlを用いたテーブルへのINSERT~

<目次> (1) Pythonでcsvを読み込んでデータベース化する方法  (1-1) 構文(to_sql)  (1-2) 構文(to_sql)の引数  (1-3) サンプルプログラム (1) Pyt …

  • English (United States)
  • 日本語
Top