PythonでSQLServerに接続する

1.SQLServerのドライバをインストールする。

ドライバには、microsoftがテストをしたpyodbc Driverとpymssqlのドライバがあるようです。
このページではpyodbcを使った接続方法を説明していきます。
※私のやり方が悪いせいか、pymssqlでは動作確認ができませんでした。

Microsoftの説明Websiteはこちら

まず、環境の確認をして自身に環境に合ったドライバをインストールします。
※devは私のユーザ名なので、それぞれの環境で置き換えてください。
C:\Users\dev>py –version Python 3.8.2

こちらのサイトからバージョンに合ったものをドライバをダウンロードしてインストールします。


こちらから自身の環境に合ったバージョンのドライバをダウンロードします

私の環境ではpymssql-2.1.4-cp38-cp38-win32.whlをdownloadします。
Pythonのインストールフォルダへコピーします。
C:\Users\dev\AppData\Local\Programs\Python\Python38-32 人によってはC:\Python38などになると思います

2.pyodbcモジュールをインストールします

コマンドライン(cmd.exe)を開き、下記コマンドを入力します
> cd C:\Users\dev\AppData\Local\Programs\Python\Python38-32
> pip install pyodbc
(> py -m pip install pyodbc)

C:\Users\dev\AppData\Local\Programs\Python\Python38-32>py -m pip install pyodbc Collecting pyodbc Downloading pyodbc-4.0.30-cp38-cp38-win32.whl (58 kB) |████████████████████████████████| 58 kB 1.6 MB/s Installing collected packages: pyodbc Successfully installed pyodbc-4.0.30



補足:pymssqlモジュールをインストールします(動作失敗)

コマンドライン(cmd.exe)を開き、下記コマンドを入力します
> cd C:\Users\dev\AppData\Local\Programs\Python\Python38-32
> pip install pymssql-2.1.4-cp38-cp38-win32.whl
(> py -m install pymssql-2.1.4-cp38-cp38-win32.whl)

成功すると下記の様に表示されます。
ですが、こちらの環境ではうまく実行できませんでした。
C:\Users\dev\AppData\Local\Programs\Python\Python38-32>py -m pip install pymssql-2.1.4-cp38-cp38-win32.whl
Processing c:\users\dev\appdata\local\programs\python\python38-32\pymssql-2.1.4-cp38-cp38-win32.whl
Installing collected packages: pymssql
Successfully installed pymssql-2.1.4

3.Pythonから接続してみる

import pyodbc 
server = 'localhost' 
database = 'TEST'
username = 'dbusername' 
password = 'dbuserpassword' 
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

cursor.execute("SELECT @@version;") 
row = cursor.fetchone() 
while row: 
    print(row[0])
    row = cursor.fetchone()


実行結果(Result)
Microsoft SQL Server 2017 (RTM-GDR) (KB4505224) – 14.0.2027.2 (X64) Jun 15 2019 00:26:19 Copyright (C) 2017 Microsoft Corporation Express Edition (64-bit) on Windows 10 Pro 10.0 (Build 18363: ) 説明は以上

Environment
Windows10, Python 3.8.2, SQLServer, pyodbc

Continue Reading

SQLServer stored procedure Sample

SQLServerのストアドプロシージャのサンプルを備忘録として残しておきます。

ALTER PROCEDURE [dbo].[TESTPROC] 

DECLARE @TARGETCOL VARCHAR(100) = 'testvalue'
	   ,@T_SQL		VARCHAR(200) = 'sql ='

BEGIN TRY
begin
	DECLARE @T_CODE VARCHAR(50)
	DECLARE T_CUR CURSOR FOR
		SELECT product_cd  FROM dbo.product
		WHERE product_name = @TARGETCOL

	OPEN T_CUR
	FETCH NEXT FROM T_CUR INTO @T_CODE 

	WHILE @@FETCH_STATUS = 0
		BEGIN
			SET @T_SQL = @T_SQL + @T_CODE
			FETCH NEXT FROM T_CUR INTO @T_CODE
		END

	CLOSE T_CUR
	DEALLOCATE T_CUR
end

	PRINT @T_SQL
END TRY

BEGIN CATCH
	SELECT ERROR_NUMBER() AS エラー番号
		  ,ERROR_SEVERITY() AS エラー重大度
		  ,ERROR_MESSAGE() AS エラーメッセージ
		  ,ERROR_LINE() AS エラー行
END CATCH
Continue Reading