#Table ストレージとは
Azure Table ストレージ サービスは、大量の構造化データを格納します。
このサービスは、Azure クラウドの内部および外部からの認証された呼び出しを受け付ける NoSQL データストアです。
要は、外部にSQLのデータをストアできるというものです。PTVSを使った場合DjangoでSQLを使いたいという時には便利です。
#Djangoのアプリケーション作成
こちらの方のサイトを参考にして作成いたします。
まず、新規でDjangoアプリの作成を行います。作成方法はこちらを参考にしてください。
Install Python Packageにてpipでazureのパッケージをダウンロードしてきてください。
##ストレージ作成
Azureのポータルにて
【ストレージ アカウント】➡︎【追加】を選択します。
基本的には名前の部分だけ決めて後はデフォルトの設定で大丈夫です。
また、リソースグループを作成していない場合作成してください!
作成されると、ストレージアカウントに先ほど作成したアカウントから
【アカウント】➡︎【アクセスキー】➡︎【ストレージアカウント/key】
を覚えておきましょう!外部からアクセスする際に必要です。
##ソースコード記入
最初に紹介したサイトから参考にしました。
インポートされているazureの説明は省きますが詳しく知りたい方はこちらに説明があります。
from django.http import HttpRequest
from django.template import RequestContext
from datetime import datetime
from django.http import HttpResponse
from django.template.loader import render_to_string
from azure.storage.table import TableService, Entity
account_name = 'ストレージのアカウント名'
account_key = 'key(複数あるkeyのどれかで良い)'
table_service = TableService(account_name=account_name, account_key=account_key)
table_service.create_table('mytasks')
def list_tasks(request):
entities = table_service.query_entities('mytasks', '', 'name,category')
html = render_to_string('app/test.html', {'entities':entities})
return HttpResponse(html)
def add_task(request):
name = request.GET['name']
category = request.GET['category']
table_service.insert_entity('mytasks', {'PartitionKey':name+category, 'RowKey':name, 'name':name, 'category':category})
entities = table_service.query_entities('mytasks', '', 'name,category')
html = render_to_string('app/test.html', {'entities':entities})
return HttpResponse(html)
def update_task(request):
name = request.GET['name']
category = request.GET['category']
partition_key = name + category
row_key = name
table_service.update_entity('mytasks', partition_key, row_key, {'PartitionKey':partition_key, 'RowKey':row_key, 'name': name, 'category':category})
entities = table_service.query_entities('mytasks', '', 'name,category')
html = render_to_string('app/test.html', {'entities':entities})
return HttpResponse(html)
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h2>My Tasks</h2> <br>
<table border="1">
<tr>
<td>Name</td>
<td>Category</td>
</tr>
{% for entity in entities %}
<form action="update_task" method="GET">
<tr>
<td>{{entity.name}} <input type="hidden" name='name' value="{{entity.name}}"></td>
<td>{{entity.category}}
<input type="hidden" name='category' value="{{entity.category}}"></td>
</tr>
</form>
{% endfor %}
</table>
<br>
<hr>
<table border="1">
<form action="add_task" method="GET">
<tr>
<td>Name:</td
><td><input type="text" name="name"></input></td>
</tr>
<tr>
<td>Category:</td>
<td><input type="text" name="category"></input></td>
</tr>
<tr>
<td><input type="submit" value="add task"></input></td>
</tr>
</form>
</table>
</body>
</html>
urlpatterns = [
url(r'^$', 'app.views.list_tasks'),
url(r'^list_tasks$', 'app.views.list_tasks'),
url(r'^add_task$', 'app.views.add_task'),
url(r'^update_task$', 'app.views.update_task')
##実行
実行を行うとName:とCategoryがあるので、それぞれ記入して、add taskするとMy Tasksに値が格納されます。また、記入し直したり、Djangoを起動し直したりしても当然ですが、値は保持されます。
#終わりに
ストレージのアカウントから実際に値が挿入されていることを確認できます。
実際にWindows内にSQLをインストールしたりするのはとても大変でめんどくさいので、すごくありがたい機能だと思うので、ぜひ試してください。