Windows10 Pro x64 + Python3 + pyodbc より Ubuntu 16.04 + SQL Server2017 Express にアクセスする


目的

Windows10 + Python3 + pyodbc -> Ubuntu 16.04 + SQL Server2017 Express にアクセスする
まずは SELECT から
対象テーブルはUbuntu 16.04 x64 + SQL Server2017 Express で AdventureWorks2017.bak を復元してみるとする

環境変数の追加

Windows版のVsCodeでPythonを使う場合、出力ターミナルで日本語の文字化けが発生する
これを回避する手段はいくつかあるようだけど、自分は環境変数に以下を追加して回避している
 変数:PYTHONIOENCODING
 値:UTF-8

pyodbcのインストール

$ sudo pip3 install pyodbc

サンプルコード

test01.py
import pyodbc
# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode
# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
server   = 'tcp:xxx.xxx.xxx.xxx' 
database = 'AdventureWorks2017' 
username = 'demo' 
password = 'demo' 
constr = 'DRIVER={SQL Server};SERVER=' + server + ';DATABASE=' + database + ';UID=' + username + ';PWD=' + password
cnxn = pyodbc.connect(constr)
# Create a cursor from the connection
cursor = cnxn.cursor()

cursor.execute("SELECT * FROM Person.Address")
row = cursor.fetchone()
if row:
    print(row)

参考にしたのは以下のサイト

Python SQL ドライバー - pyodbc