Build a GQL query (for Google App Engine) that has

2020-06-23 03:35发布

Say I have the following model:

class Schedule(db.Model):
    tripCode = db.StringProperty(required=True)
    station = db.ReferenceProperty(Station, required=True)    
    arrivalTime = db.TimeProperty(required=True)
    departureTime = db.TimeProperty(required=True)

And let's say I have a Station object stored in the var foo.

How do I assemble a GQL query that returns all Schedule objects with a reference to the Station object referenced by foo?

This is my best (albeit incorrect) attempt to form such a query:

myQuery = "SELECT * FROM Schedule where station = " + str(foo.key())

Once again foo is a Station object

2条回答
我只想做你的唯一
2楼-- · 2020-06-23 04:10

An even easier thing to do is to change the model definition by adding the 'collection_name' field to the ReferenceProperty:

station = db.ReferenceProperty(Station, required=True, collection_name="schedules")

Then you can just do:

foo.schedules

whenever you want to get all the stations' schedules.

查看更多
Rolldiameter
3楼-- · 2020-06-23 04:27

You shouldn't be inserting user data into a GQL string using string substitution. GQL supports parameter substitution, so you can do this:

db.GqlQuery("SELECT * FROM Schedule WHERE station = $1", foo.key())

or, using the Query interface:

Schedule.all().filter("station =", foo.key())
查看更多
登录 后发表回答