自己投資としてチャレンジしている内容を Blog で公開しています。今回は Microsoft ODBC Driver for SQL Server を使って python で SQL Server に接続し Select 文を実行する方法について紹介します。(In English: Python – How to connect to SQL Server on Ubuntu No.92)
Summary
▼1. SQL Server on Ubuntu への接続
本 blog では SQL Server への接続や処理に関して Java でのコーディングについて、以下のリストのように紹介していました。一方で、python の紹介はありませんでした。そのため python を使った、SQL Server への接続や処理について、今後共有したいと思います。
(2022/12 時点)
- Java – SQL Server 統計情報の更新 Visual Studio Code on Ubuntu No.91
- Java – SQL Server サンプルデータ作成 v2 on Ubuntu No.89
- Java – SQL Server サンプルデータの作成 VS Code No.87
- Java – SQL Server 検索結果をAzure Blob Storage に保存 No.75
- Java – SQL Server Select 実行結果をテキストに保存 No.70
- Java – JDBC Driver for SQL Server on Ubuntuの自動リトライ接続 No53
- Java – Azure SQL DB への ActiveDirectoryPassword を使った接続 No.10
- Java – SQL Server on Linux トランザクションでクエリを制御する方法 No9
- Java – SQL Server on Linux で select を実行する方法 On Ubuntu No.8
- Java – JDBC Driver for SQL Server の接続文字列について No.7
- Java – SQL Server on Linux に接続時の「エラーハンドリング」 &「リトライ」方法 No.6
- Java – SQL Server on Linux に接続する方法 on Ubuntu No.5
▼2. SQL Server に接続し Select を実行する Python コード
2-1. SQL Server on Linux をインストール
SQL Server 2022 が正式リリース General Avaiable (GA) されました。
Quickstart: Install SQL Server and create a database on Ubuntu
2-2. Microsoft ODBC Driver for SQL Server をインストール
pip install pyodbc2-3. SQL Server on Linux に接続し Select を実行する python コード
Python のコード runquery.py を作成します。環境に合わせて以下のパラメータを変更します。
- server
- database
- username
- password
// runquery.py
import pyodbc
server = 'localhost'
database = 'testdb'
username = 'sa'
password = 'yourpassword'
driver= '{ODBC Driver 17 for SQL Server}'
try:
cnxn = pyodbc.connect('DRIVER='+driver+';SERVER='+server+';PORT=1433;DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM testdb.dbo.sampletable")
row = cursor.fetchone()
while row:
print (str(row[0]) + " " + str(row[1]))
row = cursor.fetchone()
except pyodbc.Error as pye:
print(pye)2-4. 実行結果
エラーなく実行した結果が以下です。Select の実行結果が表示されます。
0 0 10 1 20 2 xxx xxx 80 8 90 9 100 0
2-5. エラーが発生した場合
2-5-1. ユーザー sa のパスワードが間違っている場合 Error 18456
('28000', "[28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'sa'. (18456) (SQLDriverConnect)")2-5-2. データベース名 “testdb2” が存在しない場合 Error 4060
('42000', '[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot open database "testdb2" requested by the login. The login failed. (4060) (SQLDriverConnect)')2-5-3. クエリに指定しているオブジェクト “testdb.dbo.sampletable1” が存在しない場合 Error 208
('42S02', "[42S02] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid object name 'testdb.dbo.sampletable1'. (208) (SQLExecDirectW)")▼3. 参考情報
- Quickstart: Install SQL Server and create a database on Ubuntu
- pyodbc https://pypi.org/project/pyodbc/
- https://learn.microsoft.com/ja-jp/sql/connect/python/pyodbc/step-3-proof-of-concept-connecting-to-sql-using-pyodbc?view=sql-server-ver15#connect
以上です。参考になりましたら幸いです。