How to fix Google Cloud Datastore ValueError: A Key must have a project set.
Problem:
You are trying to connect to the Google Cloud Storage object database:
#!/usr/bin/env python3
from google.cloud import datastore
# Create, populate and persist an entity
entity = datastore.Entity(key=datastore.Key('MyEntityKind')) # Line of error
# ...
but when running that code, you get this error message:
Traceback (most recent call last):
File "./IndexIntoDB.py", line 4, in <module>
entity = datastore.Entity(key=datastore.Key('MyEntityKind'))
File "/usr/local/lib/python3.6/dist-packages/google/cloud/datastore/key.py", line 109, in __init__
self._project = _validate_project(project, parent)
File "/usr/local/lib/python3.6/dist-packages/google/cloud/datastore/key.py", line 512, in _validate_project
raise ValueError("A Key must have a project set.")
ValueError: A Key must have a project set.
Solution
Note: While the solution below fixes the error message listed above, you might be more interested in having a look at this minimal entity insertion example
As the error message indicates, you need to add a project name. If you don’t know the project name, go to the Google Cloud Console, select the right project at the top and then look at the URL:
https://console.cloud.google.com/datastore/welcome?project=perceptive-tape-12345
In this example, the project ID (which you have to use in the Python code isĀ perceptive-tape-12345
.
See also the Keys section of the google-cloud-datastore python documentation.