Python – SQL Server on Ubuntu に接続する方法  No.92

自己投資としてチャレンジしている内容を Blog で公開しています。今回は Microsoft ODBC Driver for SQL Server を使って python で SQL Server に接続し Select 文を実行する方法について紹介します。(In English: Python – How to connect to SQL Server on Ubuntu  No.92)

▼1. SQL Server on Ubuntu への接続

本 blog では SQL Server への接続や処理に関して Java でのコーディングについて、以下のリストのように紹介していました。一方で、python の紹介はありませんでした。そのため python を使った、SQL Server への接続や処理について、今後共有したいと思います。

(2022/12 時点)


▼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 pyodbc

2-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. 参考情報

  1. Quickstart: Install SQL Server and create a database on Ubuntu
  2. pyodbc https://pypi.org/project/pyodbc/
  3. 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

以上です。参考になりましたら幸いです。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です