目次

前のトピックへ

1.6. アプリケーションをデプロイする

次のトピックへ

1.8. デプロイ処理を追加する

このページ

1.7. Windows Azure SQL データベースを使用する

ここでは、Djangoのモデルクラスを使用したアプリケーションデータの保管先としてWindows Azure SQL データベースを使用する方法について説明します。

1.7.1. SQL データベースの作成

1.7.1.1. データベースサーバの作成

アプリケーションデータの保管にWindows Azure SQL データベースを使用する場合は、データベースサーバとデータベースを作成します。

まず最初にデータベースサーバを作成します。管理ポータルの「SQL データベース」→「サーバー」→「追加」から作成します。「地域」には先に作成したアフィニティグループと同一の地域を指定してください。サーバ名は自動で決定されます。

../../_images/074.png

なおデータベースサーバでは接続を許可するIPアドレスを設定することができます。管理ポータルの「SQL データベース」→「サーバー」で対象のデータベースサーバを選び、データベースサーバのダッシュボードにあるメニュー「構成」を選択すると、「使用できるIPアドレス」として任意のIPアドレスを設定できます。

使用中のローカルコンピュータから管理ポータルにアクセスする際に使用されているグローバルIPアドレスも画面内に表示され、またその横の「使用できるIPアドレスに追加します」を選択するとそのIPアドレスからの接続が可能となりますので、使用中のローカルコンピュータ上で実行するアプリケーションまたは管理ツールからWindows Azure SQL データベースに接続する場合は、使用できるIPアドレスとして追加してください。

../../_images/162.png

1.7.1.2. データベースの作成

データベースサーバが作成されたら、次に作成したサーバ上にデータベースを作成します。管理ポータルの「新規」→「データ サービス」→「SQL データベース」→「カスタム作成」から作成します。「サーバー」には先に作成したデータベースサーバを選択してください。また以下の例では「エディション」として「WEB」、「データベース サイズの制限(最大サイズ)」として「1GB」、照合順序として「Japanese_Unicode_CI_AS」を選択しています。

../../_images/076.png

1.7.2. SQL Server Expressのインストール

管理ポータル上で作成したWindows Azure SQL データベースに対してローカルコンピュータ上で実行するアプリケーションから接続するためには、データベースのドライバをローカルコンピュータ上にインストールする必要があります。またアプリケーション開発用のデータベースをローカルコンピュータ上に作成する場合はデータベース本体も必要です。

Windows Azure SQL データベースはSQL Serverと互換性があるので、アプリケーション開発に使用するデータベースおよびドライバとして無償利用が可能なSQL Server 2012 Expressを使用することができますので、ダウンロードページより入手のうえインストールしてください。

アプリケーション開発の段階からWindows Azure SQL データベースを使用する場合はドライバのみのインストールで間に合いますので、ドライバとGUIクライアントツールのみで構成されるManagementStudio版を、アプリケーション開発段階ではローカルコンピュータにSQL Serverを導入して使用する場合はデータベースサーバを含むWT版またはADV版を導入すると良いでしょう。

1.7.3. データベース接続の確認

データベースへの接続確認は、管理ポータル、またはSQL Server Management Studioなどのクライアントアプリケーションより行うことができます。

1.7.3.1. 管理ポータルからの操作

管理ポータルより「SQL データベース」に移動して対象のデータベースまたはデータベースサーバを選択のうえ画面下部のメニュー「管理」を押下すると、SQL データベース管理ポータルのログオン画面に移動します。なおSQL データベース管理ポータルの利用に当たってはSilverlightが必要ですので、Silverlightのインストールを促された場合はまず指示に従いインストールを行ってください。

../../_images/160.png

データベースサーバの作成時に指定したユーザ名とパスワードを入力してログインするとメニュー画面が表示されますので、データベースオブジェクトの作成やクエリの実行など、目的の操作を行ってください。

../../_images/161.png

1.7.3.2. クライアントアプリケーションからの操作

SQL Server Management Studioなどのクライアントアプリケーションから接続する場合は、上述の通り、アプリケーションを実行するローカルコンピュータに割り当てられているグローバルIPアドレスを、データベースサーバの接続許可IPアドレスとして予め登録しておく必要があります。

接続許可IPアドレスの登録が完了したら、クライアントアプリケーションより必要な接続情報を入力のうえ、リモートからの接続が可能となったことを確認してみてください。認証方式は「SQL Server 認証」、接続先のデータベースサーバ名は「サーバ名.database.windows.net」となります。

../../_images/163.png

1.7.4. アプリケーションのデータベースの設定

Djangoのモデルクラスを使用したアプリケーションデータの保管としてWindows Azure SQL データベースを使用する場合は、以下での説明に沿って、必要となるライブラリの導入とアプリケーションの設定を行ってください。

1.7.4.1. pyodbcのインストール

SQL ServerのドライバではODBCインタフェースが提供されているので、Pythonアプリケーションからはpyodbcを介して使用することができます。コマンドプロンプトで以下のコマンドを入力し、pyodbcをインストールします。

> easy_install -Z pyodbc

1.7.4.2. django-pyodbc-azureのインストール

SQL Server+pyodbcの構成で動作するDjangoのモデルバックエンドライブラリとして、django-pyodbc-azureがあります。コマンドプロンプト上で以下のコマンドを入力してください。

> pip install django-pyodbc-azure

1.7.4.3. Djangoプロジェクトのデータベース設定

Djangoプロジェクト内のsettings.pyを開き、データベース設定を以下の内容で記述します。

  • ENGINE: sql_server.pyodbc
  • NAME: データベース名
  • USER: ログイン名@データベースサーバ名
  • HOST: データベースサーバ名.database.windows.net
  • OPTIONS - driver: SQL Server Native Client 11.0

サンプルは以下です。

DATABASES = {
    'default': {
        'ENGINE': 'sql_server.pyodbc',
        'NAME': 'mydb',
        'USER': 'mylogin@myserver',
        'PASSWORD': 'password',
        'HOST': 'myserver.database.windows.net',
        'PORT': '',

        'OPTIONS': {
            'driver': 'SQL Server Native Client 11.0',
            'MARS_Connection': True,
        },
    }
}

1.7.4.4. アプリケーションとデータベースの同期

上記までの設定が完了したら、アプリケーションがモデルクラスとデータベースの同期を行います。同期の方法は一般的なDjangoアプリケーション開発の場合と同様です。実際のアプリケーションではそれぞれ独自のモデルクラスを実装しますが、ここでは便宜上、Djangoに標準で組み込まれているadminアプリケーションを使用してデータベースの同期を確認します。まずDjangoプロジェクト内の各ファイルの記述を以下の通り修正し、adminアプリケーションを有効化してください。

  • settings.py
  • タイムゾーンと言語コードの変更
  • django.contrib.adminアプリケーションのコメントアウト解除
TIME_ZONE = 'Asia/Tokyo'

LANGUAGE_CODE = 'ja'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)
  • urls.py
  • django.contrib.adminモジュール関連のコメントアウト解除
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Uncomment the next line to enable the admin:
    url(r'^admin/', include(admin.site.urls)),
)

これでadminアプリケーションが有効となりましたので、次にコマンドプロンプトから、以下のDjangoの管理コマンドを実行し、データベース同期のためのSQLを確認します。

> python manage.py sqlall admin

この段階で以下のようなSQLの出力があれば、SQL データベースに正しく接続できている状態となります。

../../_images/150.png

続けてコマンドプロンプトから以下のDjangoの管理コマンドを実行し、データベースの同期を実行します。

> python manage.py syncdb

コマンド実行中にDjango認証アプリケーションにおけるスーパーユーザの作成要否を尋ねられますので、任意のユーザ名とパスワード、メールアドレスを入力して作成してください。

../../_images/153.png

なおPTVSから実行する場合はDjangoプロジェクトのコンテキストメニューから「Django Sync DB」を選択します。

../../_images/152.png

データベースの同期の実行が完了したら、SQL データベースの管理ポータルまたはSQL Server Management Studioより、データベース内に各種のテーブルが作成されたことを確認してみてください。

../../_images/155.png

また、開発サーバを起動して前段の手順の中で登録したスーパーユーザでadminアプリケーションにログインし、ユーザやグループの追加・更新なども試してみるとよいでしょう。

../../_images/156.png