Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Visual Studio Code と Python で Azure Data Services にアクセスしてみよう (Azure SQL Database 、 Azure Machine Leaning 編 )

Microsoft Japan Data Platform Tech Sales Team
清水

みなさん、こんにちは。昨年末の記事では、 Visual Studio 2015 で Python 環境を構成し、 SQL Server 、 Azure Sql Database にアクセスする際の手順やポイントをお伝えしましたが、いかがだったでしょうか? 今回は、 Visual Studio Code で Python 環境を構成し、 Azure SQL Database 、 Azure Machine Learning へアクセスする際の手順、ポイントをお伝えします。

Visual Studio Code とは

Visual  Studio Code( 以降 VS Code)  は、 Visual Studio と名前はついていますが、 Visual Studio 2015  や Visual Studio 2017  RC とは異なり、軽量かつ高速な高機能エディターです。  VS Code の詳細については、以下のサイトをご参照下さい。

Visual Studio Code

VS Code は Windows に加え、 Linux  ,  Mac の環境でも使用可能ですが、ここでは、 Windows の環境を前提とします。

VS Code のインストール

以下のサイトから最新版の Visual Studio Code のインストーラーがダウンロード可能です。

Download Visual Studio Code

インストーラーをダウンロードしたら、これを実行し VS Code をインストールします。

インストール後、 VS Code を起動すると、以下のような画面が表示されるので、をクリックし、エクスプローラーを表示します。続いて、「フォルダーを開く」をクリックし、ファイルを配置するフォルダを指定します。

以下では「 WORK 」というフォルダを開いています。この状態でをクリックし、ファイル名を入力すると、エクスプローラーの右側に作業中ファイルが開かれます。

拡張機能 のインストールと設定

拡張機能のインストール前に Python のインストールを行います。ここでは、 インストールが容易かつデータ分析向けのディストリビューションという理由から Anaconda を使用することとします。詳細については、以下の記事の「 Python のインストール」ご参照下さい。

Visual Studio 2015 で Python 環境を構成し、 SQL Server 、 Azure SQL Database にアクセスしてみよう

Anaconda は 2017/2/25 現在、 Python 2.7 及び Python 3.6 を含むものが最新ですが、Python 3.5 等を含む以前のバージョンのインストーラーもダウンロードサイト内のリンクからダウンロード可能のようです。筆者の都合で恐縮ですが、今回動作確認を行った環境は Python 3.5 のため、以降では Python 3.5 を前提として説明を行います。

VS Code の特徴の 1 つとして、拡張機能があります。拡張機能を活用することで、より効率的なコーディングやデバックが可能になります。をクリックし、 ”Pyhton” と入力すると Python に関連した拡張機能の一覧が表示されます。各拡張機能の「インストール」をクリックすることで、インストールが可能です。 Python に関連した拡張機能は多数存在しますが、ここでは下図の「 Python 」という拡張機能を選択することとします。

インストールが完了したら、簡単な Python のコードを記述し、動作確認を行います。をクリックし、ファイル名に ”test.py” と入力し、ファイルを開きます。 “p” だけを入力すると候補が表示され、 Intellisense が有効なことが確認できます。また、画面下のステータスバーを確認すると、拡張子が .txt の場合はプレーンテキストと表示されていたのが、.py の場合には、 Python になっていることが確認できます。

“Hello!” とだけ表示する Python のコードを記述、保存します。作業中ファイルの画面を右クリック、メニューから「 Run Python File in Terminal 」 を選択し、コードを実行します。コードの画面の下に実行画面が表示されるので、正常に実行されていることを確認します。

Azure SQL Database へのアクセス

Python から Azure SQL Database や SQL Server へのアクセスには、 pyodbc や pymssql 等を使用することが一般的です。ここでは、 Python から ODBC を経由して SQL Server  、 Azure SQL Database にアクセスを行う pyodbc を選択します。なお、最新の ODBC ドライバは以下のサイトからダウンロード可能です。

Microsoft® ODBC Driver 13 for SQL Server® – Windows + Linux

https://www.microsoft.com/ja-JP/download/details.aspx?id=50420

pyodbc を Python に追加するため、 Anaconda のパッケージマネージャの conda を使用します。コマンドプロンプトを起動し、以下のように入力すると、 pyodbc をインストールすることが可能です。

conda install -c anaconda pyodbc=3.0.10

なお、 pyodbc  の詳細については、以下をご参照下さい。

https://mkleehammer.github.io/pyodbc/

ここでは、アクセス先の Azure SQL Database に AdventureWorksLT サンプルデータベースが作成され、 VS Code からアクセス可能とします。拡張子が “.py” のファイルを新規作成し、以下のようなコードを記述、保存、実行します。

#pyodbcのインポート
import pyodbc

#接続先 SQL Server 名
server = 'SQL Server 名'
#接続先データベース名
database = 'AdventureWorksLT' 
#SQL Server 認証で使用するログイン名
username = 'ログイン名'
#SQL server 認証で使用するパスワード
password = 'パスワード'

#Azure SQL Database への接続
#SQL Server 認証の場合
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server}; SERVER='+server+'; DATABASE='+database+' ;UID='+username+'; PWD='+ password + '; ENCRYPT=Yes')

#カーソルのオープン
cursor = cnxn.cursor()

#クエリの実行と行の取得
cursor.execute("SELECT AccountNumber, COUNT(*) FROM SalesLT.SalesOrderHeader GROUP BY AccountNumber ORDER BY AccountNumber;") 
row = cursor.fetchone() 

#取得した行の表示
while row: 
    print(row[0], row[1])
    row = cursor.fetchone()

#t1テーブルを作成
cursor.execute("CREATE TABLE t1(co1 int primary key,col2 varchar(10))")
#t1テーブルに行を追加
cursor.execute("INSERT t1 VALUES(1,'test1')")
#トランザクションのCOMMIT
cnxn.commit()

#接続のクローズ
cnxn.close()

pyodbc では、暗黙的なトランザクションが有効になっているため、 INSERT の直後に commit を実行し、トランザクションをコミットしています。 正常に実行出来ると、以下のような画面が表示されます。

Azure Machine Leaning へのアクセス

Azure Machine Leaning( 以降 Azure ML) では、作成した予測モデルを、 Web サービスとして公開することが可能です。ここでは 、 userID を 1 つ送信すると、おすすめ Item の ID を 5 つ返す Web サービスを前提とします。 Azure ML では、 Web サービスの公開方法として、「 Deploy Web Service [Classic] 」と「 Deploy Web Service [New] Preview 」の 2 つバージョンが使用可能ですが、ここでは「 Deploy Web Service [New] Preview 」を用いて公開した Web サービスを前提とします。

「 Deploy Web Service [New] Preview 」を用いて公開した Web サービスの管理やサンプルコードの参照を行うには、 Azure Portal で対象 Azure ML の「概要」を表示し、「 Machine Learning Web サービス管理の起動」をクリックします。管理画面が表示されたら、画面上部の「 Web Services 」をクリックすると、 Web サービスの一覧が表示されるので、対象の Web サービスをクリックします

 

その後、以下の画面が表示されるので、「 Use Web Service 」をクリックします。

Web サービスの URL ( 下図では Request Response)  、 API キー ( 下図では Primary Key あるいは Secondary Key) や C# 、 Python 、 R 等で Web サービスにアクセスするためのサンプルコードが参照可能です。ここでは、 Python 3.5 を前提としているので、「 Python 3+ 」をクリックします。

VS Code で拡張子が “.py” のファイルを新規作成します。 上記の画面から Python のサンプルコードをコピー、ペーストし、 userID の値、 Web サービスの URL  、 API キーを修正し、保存、実行します。

#urllibとjsonのインポート
import urllib.request
import json

data = {
        "Inputs": {
                "input1":
                [
                    {
                            'userID': "xxxxx", # おすすめ Item の ID を取得したい userID を指定
                    }
                ],
        },
    "GlobalParameters":  {
    }
}

body = str.encode(json.dumps(data))

url = 'https://xxxxx.services.azureml.net/xxxxx’ # Web サービスの URL に置き換えます。
api_key = 'abc123' # Web サービスの API キーに置き換えます。
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}

req = urllib.request.Request(url, body, headers)

try:
    response = urllib.request.urlopen(req) # Web サービスにリクエストを送信

    result = response.read() #Web サービスからリクエストの結果を取得
    print(result)

except urllib.error.HTTPError as error: # エラーハンドリング
    print("The request failed with status code: " + str(error.code))

    # Print the headers - they include the requert ID and the timestamp, 
    # which are useful for debugging the failure
    print(error.info())
    print(json.loads(error.read().decode("utf8", 'ignore')))

正常に実行出来ると、 Item 1 から Item 5 の ID が返されます。

今回は、 VS Code で Python 環境を構成し、 Azure SQL Database 、 Azure Machine Learning にアクセスする際の手順とポイントをご紹介しましたが、いかがだったでしょうか ?Python から Azure SQL Database 、 Azure Machine Learning にアクセスする際にお役に立てれば幸いです。

関連記事

Visual Studio 2015 で Python 環境を構成し、 SQL Server 、 Azure SQL Database にアクセスしてみよう

Azure Machine Learning のサンプルを使って機械学習を始めてみよう!

Azure Machine Learning Studio を使ってモデルをスクラッチから構築してみよう

Share the post

Visual Studio Code と Python で Azure Data Services にアクセスしてみよう (Azure SQL Database 、 Azure Machine Leaning 編 )

×

Subscribe to Msdn Blogs | Get The Latest Information, Insights, Announcements, And News From Microsoft Experts And Developers In The Msdn Blogs.

Get updates delivered right to your inbox!

Thank you for your subscription

×