======================================== Windows Azure SQL データベースを使用する ======================================== ここでは、Djangoのモデルクラスを使用したアプリケーションデータの保管先として Windows Azure SQL データベースを使用する方法について説明します。 SQL データベースの作成 ====================== データベースサーバの作成 ------------------------ アプリケーションデータの保管にWindows Azure SQL データベースを使用する場合は、 データベースサーバとデータベースを作成します。 まず最初にデータベースサーバを作成します。 管理ポータルの「SQL データベース」→「サーバー」→「追加」から作成します。 「地域」には先に作成したアフィニティグループと同一の地域を指定してください。 サーバ名は自動で決定されます。 .. image:: images/setup_sql_database/074.png :width: 445 :height: 312 なおデータベースサーバでは接続を許可するIPアドレスを設定することができます。 管理ポータルの「SQL データベース」→「サーバー」で対象のデータベースサーバを選び、 データベースサーバのダッシュボードにあるメニュー「構成」を選択すると、 「使用できるIPアドレス」として任意のIPアドレスを設定できます。 使用中のローカルコンピュータから管理ポータルにアクセスする際に使用されている グローバルIPアドレスも画面内に表示され、またその横の「使用できるIPアドレスに追加します」を 選択するとそのIPアドレスからの接続が可能となりますので、使用中のローカルコンピュータ上で 実行するアプリケーションまたは管理ツールからWindows Azure SQL データベースに接続する場合は、 使用できるIPアドレスとして追加してください。 .. image:: images/setup_sql_database/162.png :width: 445 :height: 312 データベースの作成 ------------------ データベースサーバが作成されたら、次に作成したサーバ上にデータベースを作成します。 管理ポータルの「新規」→「データ サービス」→「SQL データベース」→「カスタム作成」から作成します。 「サーバー」には先に作成したデータベースサーバを選択してください。 また以下の例では「エディション」として「WEB」、「データベース サイズの制限(最大サイズ)」として「1GB」、 照合順序として「Japanese_Unicode_CI_AS」を選択しています。 .. image:: images/setup_sql_database/076.png :width: 445 :height: 312 SQL Server Expressのインストール ================================= 管理ポータル上で作成したWindows Azure SQL データベースに対して ローカルコンピュータ上で実行するアプリケーションから接続するためには、 データベースのドライバをローカルコンピュータ上にインストールする必要があります。 またアプリケーション開発用のデータベースをローカルコンピュータ上に 作成する場合はデータベース本体も必要です。 Windows Azure SQL データベースはSQL Serverと互換性があるので、 アプリケーション開発に使用するデータベースおよびドライバとして 無償利用が可能なSQL Server 2012 Expressを使用することができますので、 `ダウンロードページ`_ より入手のうえインストールしてください。 .. _ダウンロードページ: http://www.microsoft.com/ja-jp/download/details.aspx?id=29062 アプリケーション開発の段階からWindows Azure SQL データベースを使用する場合は ドライバのみのインストールで間に合いますので、ドライバとGUIクライアントツールのみで 構成されるManagementStudio版を、アプリケーション開発段階ではローカルコンピュータに SQL Serverを導入して使用する場合はデータベースサーバを含むWT版またはADV版を導入すると良いでしょう。 データベース接続の確認 ====================== データベースへの接続確認は、管理ポータル、またはSQL Server Management Studioなどの クライアントアプリケーションより行うことができます。 管理ポータルからの操作 ---------------------- 管理ポータルより「SQL データベース」に移動して対象のデータベースまたはデータベースサーバを 選択のうえ画面下部のメニュー「管理」を押下すると、SQL データベース管理ポータルの ログオン画面に移動します。なおSQL データベース管理ポータルの利用に当たってはSilverlightが必要ですので、 Silverlightのインストールを促された場合はまず指示に従いインストールを行ってください。 .. image:: images/setup_sql_database/160.png :width: 445 :height: 312 データベースサーバの作成時に指定したユーザ名とパスワードを入力してログインすると メニュー画面が表示されますので、データベースオブジェクトの作成やクエリの実行など、 目的の操作を行ってください。 .. image:: images/setup_sql_database/161.png :width: 445 :height: 312 クライアントアプリケーションからの操作 -------------------------------------- SQL Server Management Studioなどのクライアントアプリケーションから接続する場合は、 上述の通り、アプリケーションを実行するローカルコンピュータに割り当てられている グローバルIPアドレスを、データベースサーバの接続許可IPアドレスとして予め登録しておく 必要があります。 接続許可IPアドレスの登録が完了したら、クライアントアプリケーションより必要な接続情報を 入力のうえ、リモートからの接続が可能となったことを確認してみてください。 認証方式は「SQL Server 認証」、接続先のデータベースサーバ名は「サーバ名.database.windows.net」となります。 .. image:: images/setup_sql_database/163.png アプリケーションのデータベースの設定 ==================================== Djangoのモデルクラスを使用したアプリケーションデータの保管として Windows Azure SQL データベースを使用する場合は、以下での説明に沿って、 必要となるライブラリの導入とアプリケーションの設定を行ってください。 pyodbcのインストール -------------------- SQL ServerのドライバではODBCインタフェースが提供されているので、 Pythonアプリケーションからは `pyodbc`_ を介して使用することができます。 コマンドプロンプトで以下のコマンドを入力し、pyodbcをインストールします。 .. _pyodbc: http://code.google.com/p/pyodbc .. code-block:: console > easy_install -Z pyodbc django-pyodbc-azureのインストール --------------------------------- SQL Server+pyodbcの構成で動作するDjangoのモデルバックエンドライブラリとして、 `django-pyodbc-azure`_ があります。コマンドプロンプト上で以下のコマンドを入力してください。 .. _django-pyodbc-azure: https://github.com/michiya/django-pyodbc-azure .. code-block:: console > pip install django-pyodbc-azure Djangoプロジェクトのデータベース設定 ------------------------------------ Djangoプロジェクト内のsettings.pyを開き、データベース設定を以下の内容で記述します。 * ENGINE: sql_server.pyodbc * NAME: データベース名 * USER: ログイン名@データベースサーバ名 * HOST: データベースサーバ名.database.windows.net * OPTIONS - driver: SQL Server Native Client 11.0 サンプルは以下です。 .. code-block:: 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アプリケーションを有効化してください。 * settings.py * タイムゾーンと言語コードの変更 * django.contrib.adminアプリケーションのコメントアウト解除 .. code-block:: py 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モジュール関連のコメントアウト解除 .. code-block:: py # 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を確認します。 .. code-block:: console > python manage.py sqlall admin この段階で以下のようなSQLの出力があれば、SQL データベースに正しく接続できている状態となります。 .. image:: images/setup_sql_database/150.png :width: 454 :height: 296 続けてコマンドプロンプトから以下のDjangoの管理コマンドを実行し、データベースの同期を実行します。 .. code-block:: console > python manage.py syncdb コマンド実行中にDjango認証アプリケーションにおけるスーパーユーザの作成要否を尋ねられますので、 任意のユーザ名とパスワード、メールアドレスを入力して作成してください。 .. image:: images/setup_sql_database/153.png :width: 454 :height: 296 なおPTVSから実行する場合はDjangoプロジェクトのコンテキストメニューから「Django Sync DB」を選択します。 .. image:: images/setup_sql_database/152.png :width: 448 :height: 230 データベースの同期の実行が完了したら、SQL データベースの管理ポータルまたはSQL Server Management Studioより、 データベース内に各種のテーブルが作成されたことを確認してみてください。 .. image:: images/setup_sql_database/155.png また、開発サーバを起動して前段の手順の中で登録したスーパーユーザでadminアプリケーションにログインし、 ユーザやグループの追加・更新なども試してみるとよいでしょう。 .. image:: images/setup_sql_database/156.png :width: 445 :height: 312