Cloud Datastore の使用

Google Cloud Datastore を使用して、App Engine アプリからのアプリケーション データを保存できます。Cloud Datastore は、自動スケーリングと高いパフォーマンスを実現し、アプリケーション開発を簡素化するように構築されたデータベースです。

このドキュメントでは、Google Cloud クライアント ライブラリを使用し、App Engine アプリから Cloud Datastore にアクセスしてデータの保存と取得を行う方法を説明します。

前提条件と設定

App Engine の Python 用「Hello, World!」の説明に従って環境とプロジェクトを設定し、App Engine での Python アプリの構造を理解してください。このドキュメントで説明しているサンプルアプリを実行する際に必要となるため、プロジェクト ID をメモして保存しておきます。

レポジトリのクローン作成

サンプルをダウンロード(サンプルのクローンを作成)します。

git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/appengine/flexible/datastore

プロジェクト設定の編集と依存関係の設定

requirements.txtgoogle-cloud-datastore ライブラリを含めます。これは、Cloud Datastore 用のクライアント ライブラリです。

Flask==0.12.2
google-cloud-datastore==1.6.0
gunicorn==19.7.1

アプリケーション コード

このサンプル アプリケーションは訪問者の IP のログ記録、取得、および表示を行います。ログエントリはタイプ visit の単純な 2 フィールド クラスであり、put コマンドを使用して Cloud Datastore に保存されることがわかります。query() コマンドを使用すると、直近の 10 回の訪問を降順で取得できます。

@app.route('/')
def index():
    ds = datastore.Client()

    user_ip = request.remote_addr

    # Keep only the first two octets of the IP address.
    if is_ipv6(user_ip):
        user_ip = ':'.join(user_ip.split(':')[:2])
    else:
        user_ip = '.'.join(user_ip.split('.')[:2])

    entity = datastore.Entity(key=ds.key('visit'))
    entity.update({
        'user_ip': user_ip,
        'timestamp': datetime.datetime.utcnow()
    })

    ds.put(entity)

    query = ds.query(kind='visit', order=('-timestamp',))

    results = [
        'Time: {timestamp} Addr: {user_ip}'.format(**x)
        for x in query.fetch(limit=10)]

    output = 'Last 10 visits:\n{}'.format('\n'.join(results))

    return output, 200, {'Content-Type': 'text/plain; charset=utf-8'}

index.yaml ファイルの使用

サンプルアプリは単純なクエリを実行します。より複雑な Datastore クエリには、1 つ以上のインデックスが必要になります。このインデックスは、アプリとともにアップロードする index.yaml ファイルで指定する必要があります。このファイルは、手動で作成することも、ローカルでアプリをテストする際に自動作成することもできます。

詳細情報

Cloud Datastore の最適化やコンセプトなどの詳細については、Cloud Datastore のドキュメントをご覧ください。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Python 用 App Engine フレキシブル環境に関するドキュメント