ここでは、Djangoのモデルクラスを使用したアプリケーションデータの保管先としてWindows Azure SQL データベースを使用する方法について説明します。
アプリケーションデータの保管にWindows Azure SQL データベースを使用する場合は、データベースサーバとデータベースを作成します。
まず最初にデータベースサーバを作成します。管理ポータルの「SQL データベース」→「サーバー」→「追加」から作成します。「地域」には先に作成したアフィニティグループと同一の地域を指定してください。サーバ名は自動で決定されます。
なおデータベースサーバでは接続を許可するIPアドレスを設定することができます。管理ポータルの「SQL データベース」→「サーバー」で対象のデータベースサーバを選び、データベースサーバのダッシュボードにあるメニュー「構成」を選択すると、「使用できるIPアドレス」として任意のIPアドレスを設定できます。
使用中のローカルコンピュータから管理ポータルにアクセスする際に使用されているグローバルIPアドレスも画面内に表示され、またその横の「使用できるIPアドレスに追加します」を選択するとそのIPアドレスからの接続が可能となりますので、使用中のローカルコンピュータ上で実行するアプリケーションまたは管理ツールからWindows Azure SQL データベースに接続する場合は、使用できるIPアドレスとして追加してください。
データベースサーバが作成されたら、次に作成したサーバ上にデータベースを作成します。管理ポータルの「新規」→「データ サービス」→「SQL データベース」→「カスタム作成」から作成します。「サーバー」には先に作成したデータベースサーバを選択してください。また以下の例では「エディション」として「WEB」、「データベース サイズの制限(最大サイズ)」として「1GB」、照合順序として「Japanese_Unicode_CI_AS」を選択しています。
管理ポータル上で作成したWindows Azure SQL データベースに対してローカルコンピュータ上で実行するアプリケーションから接続するためには、データベースのドライバをローカルコンピュータ上にインストールする必要があります。またアプリケーション開発用のデータベースをローカルコンピュータ上に作成する場合はデータベース本体も必要です。
Windows Azure SQL データベースはSQL Serverと互換性があるので、アプリケーション開発に使用するデータベースおよびドライバとして無償利用が可能なSQL Server 2012 Expressを使用することができますので、ダウンロードページより入手のうえインストールしてください。
アプリケーション開発の段階からWindows Azure SQL データベースを使用する場合はドライバのみのインストールで間に合いますので、ドライバとGUIクライアントツールのみで構成されるManagementStudio版を、アプリケーション開発段階ではローカルコンピュータにSQL Serverを導入して使用する場合はデータベースサーバを含むWT版またはADV版を導入すると良いでしょう。
データベースへの接続確認は、管理ポータル、またはSQL Server Management Studioなどのクライアントアプリケーションより行うことができます。
管理ポータルより「SQL データベース」に移動して対象のデータベースまたはデータベースサーバを選択のうえ画面下部のメニュー「管理」を押下すると、SQL データベース管理ポータルのログオン画面に移動します。なおSQL データベース管理ポータルの利用に当たってはSilverlightが必要ですので、Silverlightのインストールを促された場合はまず指示に従いインストールを行ってください。
データベースサーバの作成時に指定したユーザ名とパスワードを入力してログインするとメニュー画面が表示されますので、データベースオブジェクトの作成やクエリの実行など、目的の操作を行ってください。
SQL Server Management Studioなどのクライアントアプリケーションから接続する場合は、上述の通り、アプリケーションを実行するローカルコンピュータに割り当てられているグローバルIPアドレスを、データベースサーバの接続許可IPアドレスとして予め登録しておく必要があります。
接続許可IPアドレスの登録が完了したら、クライアントアプリケーションより必要な接続情報を入力のうえ、リモートからの接続が可能となったことを確認してみてください。認証方式は「SQL Server 認証」、接続先のデータベースサーバ名は「サーバ名.database.windows.net」となります。
Djangoのモデルクラスを使用したアプリケーションデータの保管としてWindows Azure SQL データベースを使用する場合は、以下での説明に沿って、必要となるライブラリの導入とアプリケーションの設定を行ってください。
SQL ServerのドライバではODBCインタフェースが提供されているので、Pythonアプリケーションからはpyodbcを介して使用することができます。コマンドプロンプトで以下のコマンドを入力し、pyodbcをインストールします。
> easy_install -Z pyodbc
SQL Server+pyodbcの構成で動作するDjangoのモデルバックエンドライブラリとして、django-pyodbc-azureがあります。コマンドプロンプト上で以下のコマンドを入力してください。
> pip install django-pyodbc-azure
Djangoプロジェクト内のsettings.pyを開き、データベース設定を以下の内容で記述します。
サンプルは以下です。
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,
},
}
}
上記までの設定が完了したら、アプリケーションがモデルクラスとデータベースの同期を行います。同期の方法は一般的なDjangoアプリケーション開発の場合と同様です。実際のアプリケーションではそれぞれ独自のモデルクラスを実装しますが、ここでは便宜上、Djangoに標準で組み込まれているadminアプリケーションを使用してデータベースの同期を確認します。まずDjangoプロジェクト内の各ファイルの記述を以下の通り修正し、adminアプリケーションを有効化してください。
- タイムゾーンと言語コードの変更
- 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', )
- 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 データベースに正しく接続できている状態となります。
続けてコマンドプロンプトから以下のDjangoの管理コマンドを実行し、データベースの同期を実行します。
> python manage.py syncdb
コマンド実行中にDjango認証アプリケーションにおけるスーパーユーザの作成要否を尋ねられますので、任意のユーザ名とパスワード、メールアドレスを入力して作成してください。
なおPTVSから実行する場合はDjangoプロジェクトのコンテキストメニューから「Django Sync DB」を選択します。
データベースの同期の実行が完了したら、SQL データベースの管理ポータルまたはSQL Server Management Studioより、データベース内に各種のテーブルが作成されたことを確認してみてください。
また、開発サーバを起動して前段の手順の中で登録したスーパーユーザでadminアプリケーションにログインし、ユーザやグループの追加・更新なども試してみるとよいでしょう。