目次
Microsoft ODBC Driver for SQL Serverのインストール (MacOS)
Microsoftのサイトで紹介されている手順でODBCドライバをインストールします。
$ brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
$ brew update
$ HOMEBREW_NO_ENV_FILTERING=1 ACCEPT_EULA=Y brew install msodbcsql17 mssql-tools
pyodbcのインストール
$ pip install pyodbc
pyodbcでSQL Serverに接続する
以下のスクリプトはSQL Serverに接続してバージョン情報を出力します。
import pyodbc
driver = 'ODBC Driver 17 for SQL Server'
server = 'localhost'
username = 'sa'
password = 'yourStrong(!)Password'
cnxn = pyodbc.connect('DRIVER={%s};SERVER=%s;UID=%s;PWD=%s' % (driver, server, username, password))
cursor = cnxn.cursor()
cursor.execute("SELECT @@version;")
row = cursor.fetchone()
while row:
print(row[0])
row = cursor.fetchone()
結果は次のようになります。
Microsoft SQL Server 2019 (RTM-CU2) (KB4536075) - 15.0.4013.40 (X64)
Feb 3 2020 16:40:57
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Linux (Ubuntu 16.04.6 LTS) <X64>
「ODBC Driver 17 for SQL Server」などのドライバ名はインストールしたドライバのodbcinst.iniに記述してあるようです。
$ cat /usr/local/Cellar/msodbcsql17/17.5.2.1/odbcinst.ini
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL S
Driver=/usr/local/lib/libmsodbcsql.17.dylib
pyodbc + sqlalchemyでSQL Serverに接続する
pyodbc単体で使うよりはsqlalchemyの便利なAPIを利用する方が楽です。
pipコマンドでsqlalchemyをインストールしておきます。
$ pip install sqlalchemy
以下のスクリプトはpyodbcとsqlalchemyを組み合わせて利用する例です。SQL Serverに接続してバージョン情報を出力します。
import urllib
from sqlalchemy import create_engine
driver = 'ODBC Driver 17 for SQL Server'
server = 'localhost'
username = 'sa'
password = 'yourStrong(!)Password'
odbc_connect = urllib.parse.quote_plus(
'DRIVER={%s};SERVER=%s;UID=%s;PWD=%s' % (driver, server, username, password))
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % odbc_connect)
with engine.connect() as conn:
rs = conn.execute('SELECT @@VERSION as version')
for row in rs:
print(row['version'])
結果は次のようになります。
Microsoft SQL Server 2019 (RTM-CU2) (KB4536075) - 15.0.4013.40 (X64)
Feb 3 2020 16:40:57
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Linux (Ubuntu 16.04.6 LTS) <X64>