'No api proxy found for service "%s"' % service AssertionError: No api proxy found for service "datastore_v3"
'No api proxy found for service "%s"' % service AssertionError: No api proxy found for service "datastore_v3"
我正在使用 Google App Engine
和 Datastore
。
这是我的模型class project_name/model/quiz_models.py
from google.appengine.ext import db
class Quiz(db.Model):
quiz_id = db.StringProperty()
post_id = db.StringProperty()
creator_id = db.StringProperty()
timestamp = db.DateTimeProperty()
quiz_title = db.StringProperty()
main.py
文件
@app.route('/insert_db')
def run_quickstart():
quiz = Quiz(post_id=data['post_id'],
quiz_id='123',
quiz_info='test info',
creator_id=data['creator_id'],
timestamp=datetime.datetime.now(),
quiz_title='Test title')
quiz.put()
我什么时候向 /insert_db
发出获取请求 URL 我收到此错误
File "/layers/google.python.pip/pip/lib/python3.9/site-packages/google/appengine/api/apiproxy_stub_map.py", line 69, in CreateRPC
assert stub, 'No api proxy found for service "%s"' % service AssertionError: No api proxy found for service "datastore_v3"
但是 google 提供的这个示例片段工作正常
@app.route('/insert_db')
def run_quickstart():
# [START datastore_quickstart]
# Imports the Google Cloud client library
# Instantiates a client
datastore_client = datastore.Client()
# The kind for the new entity
kind = "Tasker"
# The name/ID for the new entity
name = "sampletask1aa"
# The Cloud Datastore key for the new entity
task_key = datastore_client.key(kind, name)
# Prepares the new entity
task = datastore.Entity(key=task_key)
task.update(
{
"category": "Personal",
"done": False,
"priority": 4,
"description": "Cloud Datastore",
}
)
# Saves the entity
datastore_client.put(task)
有多种方法可以与 GAE 中的数据存储进行交互。选项太多,让人一头雾水,但我会尽力为您指明正确的方向。
您的代码使用的是非常古老的数据存储访问技术,如以下行所示:
from google.appengine.ext import db
这是带有 Python 2 的原始第一代 GAE。我怀疑它不能与 Python 3.
一起使用
从您的代码来看,您似乎想将第二代 GAE 与 Python 3 一起使用(这很好,因为旧的东西正在逐步淘汰)。您有两个主要的数据存储选项:
- 使用the
google-cloud-datastore
Python client。这就是上面的工作代码示例所使用的。
- 使用the
google-cloud-ndb
Python client。这更接近您代码中的旧 db
库。
如果你是开始一个新项目,那么第一选择更好。如果您正在迁移 Python 2 项目,那么第二个选择可能更好。
我正在使用 Google App Engine
和 Datastore
。
这是我的模型class project_name/model/quiz_models.py
from google.appengine.ext import db
class Quiz(db.Model):
quiz_id = db.StringProperty()
post_id = db.StringProperty()
creator_id = db.StringProperty()
timestamp = db.DateTimeProperty()
quiz_title = db.StringProperty()
main.py
文件
@app.route('/insert_db')
def run_quickstart():
quiz = Quiz(post_id=data['post_id'],
quiz_id='123',
quiz_info='test info',
creator_id=data['creator_id'],
timestamp=datetime.datetime.now(),
quiz_title='Test title')
quiz.put()
我什么时候向 /insert_db
发出获取请求 URL 我收到此错误
File "/layers/google.python.pip/pip/lib/python3.9/site-packages/google/appengine/api/apiproxy_stub_map.py", line 69, in CreateRPC
assert stub, 'No api proxy found for service "%s"' % service AssertionError: No api proxy found for service "datastore_v3"
但是 google 提供的这个示例片段工作正常
@app.route('/insert_db')
def run_quickstart():
# [START datastore_quickstart]
# Imports the Google Cloud client library
# Instantiates a client
datastore_client = datastore.Client()
# The kind for the new entity
kind = "Tasker"
# The name/ID for the new entity
name = "sampletask1aa"
# The Cloud Datastore key for the new entity
task_key = datastore_client.key(kind, name)
# Prepares the new entity
task = datastore.Entity(key=task_key)
task.update(
{
"category": "Personal",
"done": False,
"priority": 4,
"description": "Cloud Datastore",
}
)
# Saves the entity
datastore_client.put(task)
有多种方法可以与 GAE 中的数据存储进行交互。选项太多,让人一头雾水,但我会尽力为您指明正确的方向。
您的代码使用的是非常古老的数据存储访问技术,如以下行所示:
from google.appengine.ext import db
这是带有 Python 2 的原始第一代 GAE。我怀疑它不能与 Python 3.
一起使用从您的代码来看,您似乎想将第二代 GAE 与 Python 3 一起使用(这很好,因为旧的东西正在逐步淘汰)。您有两个主要的数据存储选项:
- 使用the
google-cloud-datastore
Python client。这就是上面的工作代码示例所使用的。 - 使用the
google-cloud-ndb
Python client。这更接近您代码中的旧db
库。
如果你是开始一个新项目,那么第一选择更好。如果您正在迁移 Python 2 项目,那么第二个选择可能更好。