0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python で Datastore SDK を利用する

Posted at

Python で Datastore SDK を利用する

FlaskでDatastoreを利用するために、
環境にDatastoreSDKをセットアップする

手順

例によって公式手順を参考にする

1. クライアントライブラリをインストールする

仮想環境がある場合は仮想環境に入る
$ source venv/bin/activate

(venv) $ pip install --upgrade google-cloud-datastore

(venv) $ pip list | grep datastore
google-cloud-datastore   2.5.1

2. 認証用サービスアカウントを作成する

Terraformにて作成

  • ID : datastore-sdk
  • role : roles/datastore.user

公式手順はOwner権限を付与しているが過剰なので
datastore.userを利用することにする

service_accounts.tf
module "service_account_for_datastore" {
  source       = "../modules/gcp/service_accounts"
  account_id   = "datastore-sdk"
  display_name = "datastore-sdk-service-account"
  description  = "Service Account for Datastore SDK"
  roles = [
    "roles/datastore.user"
  ]
}

3. 鍵発行

$ PROJECT_ID="自身のGCPプロジェクトID"
$ gcloud iam service-accounts keys create datastore-key.json \
  --iam-account=datastore-sdk@${PROJECT_ID}.iam.gserviceaccount.com

↑コマンドを実行したディレクトリにdatastore-key.jsonがDLされているので、
安全な場所に移動する

$ mkdir .credentials
$ mv datastore-key.json .credentials

4. 環境変数設定

発行した鍵へのパスを環境変数として登録する

$ export GOOGLE_APPLICATION_CREDENTIALS="/home/user/.credentials/datastore-key.json"

5. 使ってみる

実際にDatastoreにエンティティを挿入してみる

$ touch db.py
from google.cloud import datastore

datastore_client = datastore.Client()

kind = "Task"
name = "sampletask1"
task_key = datastore_client.key(kind, name)

task = datastore.Entity(key=task_key)
task["description"] = "Buy milk"

datastore_client.put(task)

print(f"Saved {task.key.name}: {task['description']}")
  • 実行
$ python db.py 
Saved sampletask1: Buy milk
  • 確認

コンソールで確認してみると、作成されていることが分かる

datastore.png

ハマったところ

今回の記事と全く関係ないけど、
python3.9 にアップデートしたせいで、
pip と python のバージョンが違ってて、
python 実行しようとすると
No Module named 'google'と出て実行できなかったことにハマった

pip でインストールされるのが python3.6 用だったので、
python 3.9 で実行しようとしてもそんなモジュールインストールされてないよというエラーが出たのが原因だった

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?