Python 具有两个表的GQL

Python 具有两个表的GQL,python,django,google-app-engine,gql,Python,Django,Google App Engine,Gql,您好,我正在谷歌appengine中做一个非常小的应用程序,我使用python。 我的问题是,我有两个使用de db.model的表(“clients”和“requests”)。表“client”包含电子邮件和姓名字段,表“requests”包含电子邮件和问题字段。我想做一个查询,如果两个表中的电子邮件相同,则返回每个请求的电子邮件、问题和客户端名称。有人可以帮忙吗?应用程序引擎数据存储不支持联接,因此您将无法使用GQL解决此问题。您可以使用两个GET,一个用于客户端,一个用于请求,也可以使用R

您好,我正在谷歌appengine中做一个非常小的应用程序,我使用python。
我的问题是,我有两个使用de db.model的表(“clients”和“requests”)。表“client”包含电子邮件和姓名字段,表“requests”包含电子邮件和问题字段。我想做一个查询,如果两个表中的电子邮件相同,则返回每个请求的电子邮件、问题和客户端名称。有人可以帮忙吗?

应用程序引擎数据存储不支持联接,因此您将无法使用GQL解决此问题。您可以使用两个GET,一个用于客户端,一个用于请求,也可以使用ReferenceProperty在两个实体之间建立关系

如果需要对一对多关系建模,可以使用引用属性进行建模。对于您的情况,它看起来是这样的:

class Client(db.Model):
    email = db.UserProperty()
    name = db.StringProperty()

class Request(db.Model):
    client = db.ReferencePrpoerty(Client, collection_name='requests')
    issue = db.StringProperty()
任何具有与之关联的请求的客户机实体都将自动获得一个名为requests的属性,该属性是一个查询对象,该查询对象将将所有具有客户机字段的请求实体返回到您正在处理的特定客户机实体


您可能还希望确保创建请求实体的代码将每个新实体设置为将特定用户的客户端实体作为其祖先。将这些关联项保留在同一实体组中可能有助于提高性能和处理事务。

app engine数据存储不支持联接,因此您将无法使用GQL解决此问题。您可以使用两个GET,一个用于客户端,一个用于请求,也可以使用ReferenceProperty在两个实体之间建立关系

如果需要对一对多关系建模,可以使用引用属性进行建模。对于您的情况,它看起来是这样的:

class Client(db.Model):
    email = db.UserProperty()
    name = db.StringProperty()

class Request(db.Model):
    client = db.ReferencePrpoerty(Client, collection_name='requests')
    issue = db.StringProperty()
任何具有与之关联的请求的客户机实体都将自动获得一个名为requests的属性,该属性是一个查询对象,该查询对象将将所有具有客户机字段的请求实体返回到您正在处理的特定客户机实体

您可能还希望确保创建请求实体的代码将每个新实体设置为将特定用户的客户端实体作为其祖先。将这些关联项保留在同一实体组中可能有助于绩效原因和交易。

使用此模型:

class Client(db.Model):
    email = db.StringProperty()
    name = db.StringProperty()

class Request(db.Model):
    client = db.ReferenceProperty(Client, collection_name='requests')
    issue = db.StringProperty()    
用此代码可以查询数据

from modelos import Client,Request

ctes=Client.all().filter("email =","somemail@mailbox.com.mx")

for ct in ctes:
   allRequest4ThisUser=Request.all().filter("client =",ct)
   for req in allRequest4ThisUser:
     print req.issue
使用此模型:

class Client(db.Model):
    email = db.StringProperty()
    name = db.StringProperty()

class Request(db.Model):
    client = db.ReferenceProperty(Client, collection_name='requests')
    issue = db.StringProperty()    
用此代码可以查询数据

from modelos import Client,Request

ctes=Client.all().filter("email =","somemail@mailbox.com.mx")

for ct in ctes:
   allRequest4ThisUser=Request.all().filter("client =",ct)
   for req in allRequest4ThisUser:
     print req.issue

你好谢谢。客户端使用gmail电子邮件帐户登录应用程序。一个客户端可以执行多个请求。作为一名管理员,我希望看到一个列表,其中包含来自所有客户机的所有请求,字段id和issue from table requests以及来自table clients的客户机名称……Google说:obj1,带有ref_属性可以有(许多)obj2(这是引用的obj)Hello。谢谢。客户端使用gmail电子邮件帐户登录应用程序。一个客户端可以执行多个请求。作为一名管理员,我希望看到一个列表,其中包含来自所有客户机的所有请求,字段id和issue from table requests和client name from table clients…Google说:obj1和ref_属性可以有(许多)obj2(这是被引用的obj)