john pfeiffer
  • Home
  • Categories
  • Tags
  • Archives

google app engine datastore query form post

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env python
# 2013-01-18 johnpfeiffer

import cgi
import datetime
import webapp2

from google.appengine.ext import db


class BlobStoreIndex( db.Model ):
  blobstore_key = db.StringProperty()
  name = db.StringProperty()
  date = db.DateTimeProperty( auto_now_add = True )


class MainPage( webapp2.RequestHandler ):
  def get( self ):
    self.response.out.write( '<html><body>' )
    self.response.out.write( 'BlobStoreIndex <br/>' )
#    query_kind = BlobStoreIndex.all()
#    self.response.out.write( "DEBUG: " + cgi.escape( str( query_kind ) ) + "<br/>" )
    q = db.Query( BlobStoreIndex )
# q.filter("name =" , "test" )
    q.order( "-date" )
    q.fetch( 100 )
    for element in q :
        self.response.out.write( "%s , %s , %s <br/>" % (element.name , element.blobstore_key , element.date ) )

    self.response.out.write( "</body></html>" )

"""
# not supported by App Engine Dev Environment
    index_list = q.index_list()
    for ix in index_list:
      self.response.out.write( "Kind: %s" % ix.kind() )
      self.response.out.write( "<br />" )
      self.response.out.write( "Has ancestor? %s" % ix.has_ancestor() )
      self.response.out.write( "<br />" )
      for name, direction in ix.properties():
        self.response.out.write( "Property name: " + name )
        self.response.out.write( "<br />" )
        if direction == db.Index.DESCENDING:
          self.response.out.write( "Sort direction: DESCENDING" )
        else:
          self.response.out.write( "Sort direction: ASCENDING" )
        self.response.out.write( "<br />" )
"""


# TODO: use template system
class AddPost( webapp2.RequestHandler ):
  def get( self ):
    self.response.out.write( '<html><body>' )
    self.response.write( 'Add uses POST' )
    self.response.out.write( "</body></html>" )

  def post( self ):
    self.response.out.write( '<html><body>' )
    post_values = self.request.POST
    keyList = post_values.keys()
    name = post_values[ "name" ]

    index = BlobStoreIndex()
    index.name = name
    index.put()
    self.response.out.write( 'successful post: ' + name )
    self.response.out.write( "</body></html>" )
#    self.redirect( '/' )


class AddForm( webapp2.RequestHandler ):
    def get( self ):
        self.response.out.write( '<html><body>' )
        self.response.out.write( """
         <form action="/addpost" method="post">
            <table>
                <tr><td><label>password</label></td><td><input type="password" id="password" name="password" /></td></tr>
                <tr><td><label>name</label></td><td><input type="text" id="name" name="name" /></td></tr>
                <tr><td><label>blobstore key</label></td><td><input type="text" id="blobstorekey" name="blobstorekey" /></td></tr>
                <tr><td></td><td><input type="submit"></td></tr>
            </table>
          </form>
        """ )
        self.response.out.write( "</body></html>" )


# url handler below

app = webapp2.WSGIApplication( [
  ( '/', MainPage ),
  ( '/addform' , AddForm ),
  ( '/addpost' , AddPost )
], debug = True )

COMMAND LINE

dev_appserver.py --clear_datastore googleappengine01/

In your code you can query...

        q = db.Query( Employee )
        for element in q.run( limit = 5 ):
            print element.name + "<br />\n"

OR      keys = models.ApiKey.gql( 'WHERE id = :1', id ) # returns a GQL result list

USING THE WEB UI http://localhost:8091/_ah/admin/datastore

  1. Datastore viewer will be empty (no objects in persistence)
  2. Interactive Console (enter the text below and run program)

    from google.appengine.ext import db

    class Employee(db.Model): name = db.StringProperty( required = True )

    main

    e = Employee( name = "test" ) e.put()

  3. Datastore viewer will now display an Employee -> List Entities -> Key = random string, name = test

    Query query = new Query( "Greeting" , guestbookKey )

    q = db.Query( Employee )

    GQL is similar to SQL

    q = GqlQuery("SELECT * FROM Song WHERE composer = 'Lennon, John'")


  • « javascript create post form self submit
  • Centos6 x64 openssh java7 tomcat7 ssl »

Published

Feb 4, 2013

Category

python-appengine

~417 words

Tags

  • appengine 18
  • datastore 2
  • engine 12
  • form 20
  • google 18
  • post 12
  • python 180
  • query 7