标签: gql

Google App Engine数据存储区中不精确查询的优秀模式是什么?

Google App Engine数据存储区查询语言(gql)不提供"LIKE"等不精确的运算符,甚至不区分大小写.通过存储字段的小写版本,可以解决区分大小写的问题.但是如果我想搜索一个人但我不确定这个名字的拼写怎么办?是否有可接受的处理此方案的模式?

google-app-engine gql google-cloud-datastore

3
推荐指数
1
解决办法
1180
查看次数

App Engine数据存储区IN操作员 - 如何使用?

阅读:http://code.google.com/appengine/docs/python/datastore/gqlreference.html

我想用:

:= IN

但我不确定如何使它工作.我们假设如下

class User(db.Model):
    name = db.StringProperty()

class UniqueListOfSavedItems(db.Model):
    str = db.StringPropery()
    datesaved = db.DateTimeProperty()

class UserListOfSavedItems(db.Model):
    name = db.ReferenceProperty(User, collection='user')
    str = db.ReferenceProperty(UniqueListOfSavedItems, collection='itemlist')
Run Code Online (Sandbox Code Playgroud)

如何进行查询以获取用户保存的项目列表?显然我可以这样做:

q = db.Gql("SELECT * FROM UserListOfSavedItems WHERE name :=", user[0].name)
Run Code Online (Sandbox Code Playgroud)

但这给我一个关键列表.我现在想要获取该列表并将其放入查询中以从UniqueListOfSavedItems中获取str字段.我以为我能做到:

q2 = db.Gql("SELECT * FROM UniqueListOfSavedItems WHERE := str in q")
Run Code Online (Sandbox Code Playgroud)

但是有些事情不对......任何想法?是(我在我的日常工作,所以现在不能测试):

q2 = db.Gql("SELECT * FROM UniqueListOfSavedItems __key__ := str in q)
Run Code Online (Sandbox Code Playgroud)

旁注:要搜索的是一个非常难以解决的问题,因为我真正关心的是"IN"运算符.

python google-app-engine gql google-cloud-datastore

3
推荐指数
1
解决办法
2697
查看次数

如何在Google AppEngine数据存储中输入项目?

我想检查一下电子邮件是否在Appengine的数据库中,如果没有:然后将其输入数据存储区.

我是python的新手. 为什么这个简单的代码不起作用?(如果有更好的方式/更有效的方式来写这个,请告诉我)

(我得到错误:BadArgumentError:未使用的位置参数[1])

class EmailAdd(webapp.RequestHandler):
def get(self):
    query = db.GqlQuery("SELECT * FROM EmailDatabase WHERE emailaddress=':1'", self.request.get('emailaddress'))
    result = query.get()
    if result is None:
        newemail = EmailDatabase()
        newemail.emailaddress = self.request.get('emailaddress')
        newemail.put()
Run Code Online (Sandbox Code Playgroud)

作为参考,这是我的db类:

class EmailDatabase(db.Model):
     emailaddress = db.StringProperty()
     date = db.DateTimeProperty(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

python google-app-engine gql

3
推荐指数
1
解决办法
643
查看次数

需要按引用属性中的属性排序,有什么好的解决方案吗?

说我有2种:

class Account(db.Model):
  name = db.StringProperty()

  create_time = db.DataTimeProperty()
  last_login = db.DateTimeProperty()
  last_update = db.DataTimeProperty()


class Relationship(db.Model)
  owner = db.ReferenceProperty(Account)
  target = db.ReferenceProperty(Account)
  type = db.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)

我想得到以下查询的等价:

SELECT target 
FROM Relationship
WHERE owner = :key AND type = :type
ORDERBY target.last_login DESC 
Run Code Online (Sandbox Code Playgroud)

怎么做?

参考:http://www.mail-archive.com/google-appengine@googlegroups.com/msg15878.html

google-app-engine join gql

3
推荐指数
1
解决办法
443
查看次数

如何构造GQL以不包含集合中的值?

是否可以从谷歌应用引擎数据库中选择db.Model对象的键不在给定列表中?如果是这样,语法是什么?

模型类的例外:

class Spam(db.Model):
    field1 = db.BooleanProperty(default=false)
    field2 = db.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)

我想要工作但无法弄清楚的查询示例:

spam_results = db.GqlQuery(
"SELECT * FROM Spam WHERE key NOT IN :1 LIMIT 10", 
['ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjAEM', 
 'ag1waWNreXByZXNlbnRzchMLEgxBbm5vdW5jZW1lbnQYjgEM'])

for eggs in spam_results:
  print "id: %s" % a.key().id()
Run Code Online (Sandbox Code Playgroud)

python google-app-engine gql gqlquery

3
推荐指数
1
解决办法
813
查看次数

gql查询返回BadQueryError:Parse Error

这是我的gql代码:

data = db.GqlQuery("SELECT * FROM Playlist " + "WHERE tags = :1" + "ORDER BY :2", tag, order)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

BadQueryError:Parse Error:符号BY上没有其他符号

有谁知道我做错了什么?

谢谢你的帮助

python google-app-engine gql

3
推荐指数
1
解决办法
2148
查看次数

使用Python列表查询Google App Engine数据存储区

我在我的Google App Engine应用程序中创建了一个表单,供用户从列表中选择项目,然后将从名为Item的数据存储表中提取其中的具体详细信息(例如名称,其他属性),并在表格中显示用户提交表单.

我有一个Python列表,其中包含从表单中提取的所选条目的键.我想使用此列表查找数据存储区中的条目,并以我可以传递给Django模板的方式返回它们.

我试图在这个论坛上遵循建议使用GQL查询,但到目前为止我得到的都是空结果,无论是使用fetch(),硬编码键值,尝试使用WHERE Key IN :list或的一些变体WHERE Key = :variable.

如果您需要代码,请告诉我哪些部分会有所帮助.

python django google-app-engine gql

3
推荐指数
1
解决办法
784
查看次数

ndb.gql vs ndb.query - Google App Engine

https://developers.google.com/appengine/docs/python/ndb/

https://developers.google.com/appengine/docs/python/ndb/queries

ndb.gql和ndb.query之间有区别吗?(旁边的语法)

例如

cursor = ndb.gql("select * from Account")
Run Code Online (Sandbox Code Playgroud)

VS

cursor = Account.query()
Run Code Online (Sandbox Code Playgroud)

因为我喜欢ndb.query,因为我觉得它更具可读性

例: acc=Account.query(Account.username==form.username.data,Account.password==form.password.data)

如果这两种方法在引擎盖下不同/相等,我找不到任何信息.

=>也许有性能权衡?

如果您习惯使用SQL,请注意使用GQL时的错误假设.GQL被翻译为NDB的本机查询API.这与典型的对象关系映射器(如SQLAlchemy或Django的数据库支持)不同,API调用在传输到数据库服务器之前会被转换为SQL.GQL不支持数据存储修改(插入,删除或更新); 它只支持查询.

我想ndb.query应该"更快",因为它不需要被正确翻译?

python sql google-app-engine gql

3
推荐指数
1
解决办法
2752
查看次数

localhost上的Google App Engine GQL查询

我正在Google App Engine上开发一个应用程序(Windows上的SDK版本1.7.0),我需要经常测试,此测试涉及数据存储区上的大量GQL查询.

您可以在App Engine的管理界面中在浏览器中运行GQL查询:

远程服务器上的GQL查询

但是在localhost上的SDK管理控制台上似乎无法实现这一点.没有这样的选择:

本地主机上没有GQL查询

所以我似乎只能通过我的localhost上的python脚本运行GQL查询.

每次编写一个python脚本来查询短任务的结果并不方便.此外,如果您在在线管理界面上执行此操作,您可以在下面的一个很好的表格中立即看到查询结果.如果你想通过python脚本在浏览器窗口中可视化所有查询结果,你必须编写更多代码,基本上试图重写谷歌已经在他们的服务器管理界面上做得很好.

因此,我不得不在部署后在App Engine管理界面上的浏览器上执行此操作,这会不断添加到我允许的操作计数,直到我很快达到每日免费配额限制.

那么有没有办法在我的localhost上运行GQL查询(非编程,在浏览器上)?

python google-app-engine gql localhost

3
推荐指数
1
解决办法
1341
查看次数

检查Google App Engine数据存储区实体是否具有特定属性

我是使用Google App Engine开发Web应用程序的新手.

我想检查数据存储区中为list属性(db.ListProperty)设置空值的实体.但是,当我尝试检查任何针对entity.listGAE的内容时都会出现错误:

'super' object has no attribute 'list'.

在一些搜索之后,我在这个SO问题中看到,为GAE数据存储区实体的列表属性设置空值等同于根本不设置该属性.这解释了我的错误.

所以我需要匹配数据存储区中根本没有任何list属性集的实体.查看GAE文档,我仍然没有找到任何允许我检查实体是否具有特定属性集的方法.

注意:我不必使用GQL执行此操作.我可以用GQL检索所有实体,然后用python检查.但是GQL解决方案也没问题.

python database google-app-engine gql google-cloud-datastore

3
推荐指数
1
解决办法
2783
查看次数