Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在交互控制台本地调用模型类的方法?_Python_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Python 如何在交互控制台本地调用模型类的方法?

Python 如何在交互控制台本地调用模型类的方法?,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,我从昨天开始一直在搜索这个,但仍然一无所获。通过所有的研究,到目前为止我的理解是这样的 您可以使用remote_api_shell.py远程访问数据存储 确保在环境变量中正确设置了路径 据我了解,他们谈论的远程数据存储是appspot.com中的数据存储,而不是本地数据存储。我现在不想部署我的应用程序,因此我只想在本地工作,至少现在是这样 我在我的应用程序中创建了一个名为Usersdb的模型。作为一个来自PHP、MYSQL背景的人,我认为GQL应该有控制台环境供我们测试查询。但在谷歌搜索了一

我从昨天开始一直在搜索这个,但仍然一无所获。通过所有的研究,到目前为止我的理解是这样的

  • 您可以使用remote_api_shell.py远程访问数据存储
  • 确保在环境变量中正确设置了路径
据我了解,他们谈论的远程数据存储是appspot.com中的数据存储,而不是本地数据存储。我现在不想部署我的应用程序,因此我只想在本地工作,至少现在是这样

我在我的应用程序中创建了一个名为Usersdb的模型。作为一个来自PHP、MYSQL背景的人,我认为GQL应该有控制台环境供我们测试查询。但在谷歌搜索了一番之后,我发现您可以从中的交互式控制台操作本地数据存储

http://localhost:8081/_ah/admin/interactive
从这篇文章中,我想到了在交互控制台中执行GqlQuery,而在localhost中执行GqlQuery的方法,其过程如下:-

from google.appengine.ext import db
q = db.GqlQuery("SELECT * FROM Userdb where username = 'random_user'")
print q.get().username
但我真正想做的是在我的交互控制台中执行方法调用,比如get_by_id()和get_by_key_name()等等,而不必在我的应用程序上进行测试。例如:

print Userdb.get_by_id(12)

我怎样才能让它们跑起来?我是否必须将python文件导入交互式控制台?我也试过这么做,但它使应用程序引擎崩溃了。我刚开始使用AppEngine。如果这是一个非常愚蠢的问题,请原谅。

您应该将编写的模型类导入到交互式控制台中的会话中。例如,如果应用程序中有一个名为
model.py
的文件,其中包含
Userdb
类,则可以在交互式控制台中编写以下内容:

import model

print model.Userdb.get_by_id(12)

令人惊叹的!!它起作用了。但是我注意到了一些事情。默认情况下,我的文件名为main.py,在导入该文件(main.py)时,它会在处理查询后以某种方式使应用程序引擎崩溃。我重命名了该文件,编辑了我的app.yaml文件,它不再崩溃。奇怪。有人知道为什么吗?如果你把所有的代码都放在一个文件中(比如main.py),那么除了你的模型定义之外,很可能其他的东西与交互控制台的交互很差。例如,如果在控制台中执行,本例()中的“application=”行可能会产生意外的副作用。