Ich versuche gerade mein geschriebenes Script in die Google App Engine einzupflegen.
Deshalb muss ich von SQL auf GQL wechseln. Meine ersten Versuche klappen soweit auch ganz gut.
Ich hab mal folgende Class / DB angelegt:
Code: Alles auswählen
class board_topic_entry(db.Model):
title = db.StringProperty(required=True)
name = db.StringProperty(required=True)
message = db.TextProperty()
Dann hab ich mir mal die Testeinträge im Datastore-Viewer angeguckt und habe gesehen, dass er mir meine drei Spalten (title, name, message) angelegt hat und noch zwei Spalten automatisch mit hinzugefügt hat: ID und Key
In der Spalte ID wird wie bei SQL einfach immer eine laufende ID vergeben.
Und genau darüber, wollte ich auch wieder gezielt löschen, also:
Code: Alles auswählen
#...
q = db.GqlQuery("SELECT __key__ FROM board_topic_entry WHERE ID=20")
results = q.fetch(10)
db.delete(results)
return 'gelöscht'
Wenn ich nun aber z.B.
Code: Alles auswählen
#...
q = db.GqlQuery("SELECT __key__ FROM board_topic_entry WHERE title='test123'")
results = q.fetch(10)
db.delete(results)
return 'gelöscht'
Aber wieso kann ich die ID-Spalte im Query-Befehl nicht ansprechen?
Beim Auslesen ist es mir schon übern Weg gelaufen, da konnte ich es auch nicht einfach mit "result.ID" (sowie bei den anderen: result.name, result.title etc.) aufrufen sondern musste es über "result.key().id()" machen.
Ich vermute fast, dass es irgendwie daran liegt, dass ich die Spalte nicht explizit in der Class deklariert habe ?!
Auf der anderen Seite denke ich mir, dass diese Spalte ja existiert und ich sie trotzdem ansprechen muss.
Bin für jeden Tipp dankbar.
