Here is what I do:
class Person(db.Model):
first_name = db.StringProperty()
last_name = db.StringProperty()
middle_name = db.StringProperty()
...
photo = db.BlobProperty()
person = Person.get_by_key_name(person_key_name)
if person == None or not person.photo:
self.response.set_status(404, 'Not Found')
return
self.response.headers['Content-Type'] = "image/png"
self.response.out.write(person.photo)
Shouldn’t I use SELECT with just one field (photo) instead of get_by_key_name?
No.
GQL is not SQL. There is no way of doing a SELECT query with “just one field” – you can only do either
SELECT *orSELECT __key__.