pyodbcを使ってSQLserverのDBへアクセスしました。
環境
OS:Debian9
Python:3.8
基本的にDebian系(raspbian・Raspberry Pi OSなども)ならこのやり方で行けそうな気がする。
手順
下記コマンドでunixodbc、FreeTDSをインストールする
sudo apt-get update
sudo apt-get install unixodbc unixodbc-dev
sudo apt-get install freetds-dev tdsodbc
vi等のテキストエディタでsudoを付けて/etc/odbcinst.iniに下記を記述
[FreeTDS]
Description = FreeTDS Driver
Driver = /usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so
Setup = /usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.so
/usr/lib/arm-linux-gnueabihf/odbc/libtdsodbc.soの部分は環境によっては違うかもしれない。
僕の環境(raspbianやDebian9)ではこのパスだった。
適宜libtdsodbc.soをフルパスで指定すること。
pipにてpyodbcをインストール
sudo pip install pyodbc
下記のようにPythonからMSSQLserverにアクセスできる。
下記は192.168.0.1にあるtest_dbというデータベースにuserというユーザー名でログインし、test_tbというテーブルのデータを全部取得し表示した例。
import pyodbc
con = pyodbc.connect('DRIVER=FreeTDS;SERVER=192.168.0.1;PORT=1433;DATABASE=test_db;UID=user;PWD=pass;')
cursor = con()
cursor.execute( "SELECT * FROM test_tb" )
data = cursor.fetchall()
print(data)
cursor.close()
con.close()
connect時に指定するものについて
DRIVER:odbcinst.iniに[]で定義した名前を指定
SERVER:データベースが構築されているサーバのIPアドレスか名前を指定
PORT:SQLserverのサービスのポート番号を指定。特にいじってなければSQLserverのデフォルト値である1433で良い。
DATABASE:データベース名
UID:ユーザー名
PWD:ユーザのパスワード
このほかconnect時に下記項目も追加してTDSバージョンを指定する必要があるかもしれない。
TDS_Version=7.3;
(7.3の部分は指定したいバージョンに合わせ変更)
僕は2008R2と2017で確認したがどちらもTDSバージョン指定は不要だった。
0 件のコメント:
コメントを投稿