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

2年ぶりに戻ってきた

2年ぶりのブログに戻ってきました。
なんやかんやでPythonをサボってしまい、構文を忘れてしまう始末。
やはり中途半端は良くないですね。
日中の仕事ではWindows10へシステム移行や金融系の会計・投資信託周りの仕事などをやってました。
今年は心を入替えてPython, C#, Rust, AWS, Azure辺りをやっていこうと思っています。

Continue Reading

VB.net + PostgreSQL + Npgsql DBConnect Update Delete Sample

更新または削除のサンプル

Imports Npgsql '忘れずに

     '接続文字列は適当に変更してください。
        Dim builder As New Npgsql.NpgsqlConnectionStringBuilder
        With builder
            .Host = "192.xxx.xxx.xxx"
            .Database = "dbname"
            .Username = "username"
            .Password = "password"
            .Port = 5432
            .Timeout = 20
        End With

        Dim command As NpgsqlCommand = New NpgsqlCommand("insert into tablename(name) values('memo')", conn)

        Dim retcnt = command.ExecuteNonQuery()
        MessageBox.Show("count = " + CStr(retcnt))

     'パラメータ
        '        command.CommandText = "INSERT INTO tablename (memo) VALUES (@p1)";
        '        command.Parameters.AddWithValue("p1", "Hello");

        '        Dim sResult As String = command.ExecuteScalar()

        MessageBox.Show("追加できました")
        conn.Close()

Continue Reading

VB.net + PostgreSQL + Npgsql DBConnect SELECT Sample

ネット上ではC#でのやり方が多かったのでVB.net版で載せます。

Imports Npgsql '忘れずに

     '接続文字列は適当に変更してください。
        Dim builder As New Npgsql.NpgsqlConnectionStringBuilder
        With builder
            .Host = "192.xxx.xxx.xxx"
            .Database = "dbname"
            .Username = "username"
            .Password = "password"
            .Port = 5432
            .Timeout = 20
        End With

        Dim conn As NpgsqlConnection = New NpgsqlConnection(builder.ConnectionString)
        conn.Open()

        Dim command As NpgsqlCommand = New NpgsqlCommand("select * from test", conn)
        Dim dr As NpgsqlDataReader
        dr = command.ExecuteReader()

        If dr.HasRows Then
            MessageBox.Show("hasrows is true")
        End If

        While (dr.Read())
            MessageBox.Show(dr(0))
        End While

        conn.Close()

Continue Reading

東海道山陽新幹線 旧ひかりの車内チャイム

なんか突然新幹線のあの音が気になり、調べてみました。
以前大阪へ出張して新幹線が帰るときにあの音が流れるだけでかなり癒された思い出があります。
その時代はとても激務で席に座ると即寝ていましたが、あの音が流れるとゆっくり目が覚めるんです。

Youtubeで調べてみると下記音源に近いとありましたが、真偽はわかりません。
Do they Know it’s Christmas ~ Band Aid 1984

この曲知らなかったけど、We are the world的な感じでとてもいい曲。
偶然だけど直前にMichael JacksonのHeal The Worldを聴いていたこともあり
バッチリハマりました。

今の新幹線のチャイムを元に戻して欲しい一人です。

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

Lounge Music no1 Free

ラウンジとは言っても技術に疲れた人には、音楽も必要ということでLounge Music seriesのジャンルを設けようと思います。
第1回目の音楽は、まさに初回にぴったりな曲Freeです。

FreeといえばDeniece Williamsですが、他にも多数のミュージシャンがCoverしてます。
Chante Mooreとか私の大好きなDebelah Morganとかね。

この曲を聴いてストレスを解放しましょう。

Continue Reading

釣り人が魚につられた1日

どういう意味かというと下記の様な流れでした。

千葉の外房で釣りに出かけ鴨川漁港で夜釣りをした。
→あたりが全くなかった。

翌日の朝、鴨川漁港でのポイントを変更し、釣りをした。
→あたりが全くなかった。

釣り師は、考えた。
「このまま千葉まで来て1匹も釣らず帰っていいのか?」
耐えきれなかった。

ということで太海フラワー(磯釣り)センターへ
鯛をエビで釣るということで1匹ゲットしましたが、それ以上は釣れずというか
人が多くて魚が来ない。
針の存在を既に知っているせいか、撒き餌以外はすべて食べられてしまう。
仕掛けに向かって来たと思いきや、針の直前で急停止&Uターン。

釣れたらワーキャー言って辺りの魚を散らせてしまう始末の客もいて。。。。
※これはマナーを知らない素人の中で釣っている私が悪いのかも。

太海フラワーセンターの入場料をまんまと釣られてしまいました。

Continue Reading

ソースネスクストの本気度

ソースネクストがロゼッタストーンを買収して
最近ロゼッタストーンの広告をよく見ます。

結構な値引きで5000円程度で購入できるようです。
内容は本当に値引き前と変わらないのかわかりませんが、手ごろな値段で入手できるのはうれしいですね。
実は以前ロゼッタストーンを体験したことがあるのですが、教材としてはまぁまぁ良いのですが
コース全部を制覇するのにかなり時間がかかってしまうのでやめてしまいました。

私の発音が悪いのでしょうが、なんども発音させられてついには辞めてしまうことが何度もありました。
最近はスマホ教材も多く、販売数が伸びるのかソースネクストの本気度を静観したいと思います。

Continue Reading

血液の流れの速さ?

9連休もあったのにもうあと2日。
時が流れるのは早いものです。特に遊びでの休みはね。
時の流れに身をまかせていたら、あっという間に一生が終わってしまう。

以前、幼少期に時間が流れるのが早いと感じるのは、血液の流れが速いからだよと先輩がおっしゃっていました。
年を重ねる毎に、時間が経つのが速いとも言われていますがどっちなんでしょうか?
仕事で早く時間が経たないかなと思っているときは、遅いのにね。

疲れを感じるスピードだけは、日々早くなっているような気がする今日この頃です。

Continue Reading

苦手なDB周り – Oracle

ついに仕事でPL/SQLを扱うことになり、勉強中。
新しいことを覚えるのは楽しいけど、覚えるまでは苦痛と感じる日々

Deeplearningで本のデータを読み込ませて脳に学習させるようなことできないもんかね。

意外にCの思想の影響を受けて作られているようだ。
ストアドプログラムを使うとかなりの幅が広がるのは何となく知っていたが、かなりの効果がありそうだ。
早くマスターしなければ。。。。

Continue Reading