define a model & create an entity
example :
# import db & users
from google.appengine.ext import db
from google.appengine.api import users
# define a model, inherit from db.Model
class Pet(db.Model):
name = db.StringProperty(required=True)
type = db.StringProperty(required=True, choices=set(["cat", "dog", "bird"]))
birthdate = db.DateProperty()
weight_in_pounds = db.IntegerProperty()
spayed_or_neutered = db.BooleanProperty()
owner = db.UserProperty()
# create an entity
pet = Pet(name="Fluffy",
type="cat",
owner=users.get_current_user())
pet.weight_in_pounds = 24
# store the entity
pet.put()
_____________________________________________________________
get entity from datastore
1. using db.GqlQuery
ex:
user_pets = db.GqlQuery("SELECT * FROM Pet WHERE pet.owner = :1",
users.get_current_user())
db's property:
1. db.StringProperty
2.db.DateProperty
import cgi
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.api import users
class Greeting(db.Model):
author = db.UserProperty()
content = db.StringProperty(multiline=True)
date = db.DateTimeProperty(auto_now_add=True)
class MainPage(webapp.RequestHandler):
def get(self):
self.response.out.write('<html><body>')
greetings = db.GqlQuery("SELECT * FROM Greeting ORDER BY date DESC LIMIT 10")
for greeting in greetings:
if greeting.author:
self.response.out.write('<b>%s</b> wrote:' % greeting.author.nickname())
else:
self.response.out.write('An anonymous person wrote:')
self.response.out.write('<blockquote>%s</blockquote>' %
cgi.escape(greeting.content))
# Write the submission form and the footer of the page
self.response.out.write("""
<form action="/sign" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Sign Guestbook"></div>
</form> </body></html>
""")
class Guestbook(webapp.RequestHandler):
def post(self):
greeting = Greeting()
if users.get_current_user():
greeting.author = users.get_current_user()
greeting.content = self.request.get('content')
greeting.put()
self.redirect('/')
application = webapp.WSGIApplication( [('/', MainPage), ('/sign', Guestbook)], debug=True)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
get data from datastore:
method 1:
db.GqlQuery("SELECT * FROM Greeting ORDER BY date DESC LIMIT 10")
method 2:
Greeting.gql("ORDER BY date DESC LIMIT 10")
method 3:
Greeting.gql("WHERE author = :1 ORDER BY date DESC",
users.get_current_user())
method 4:
Greeting.gql("WHERE author = :author ORDER BY date DESC",
author=users.get_current_user())
method 5:
greetings = Greeting.all()
greetings.filter("author =", users.get_current_user())
greetings.order("-date")
Clearing the Development Server Datastore
ex:
dev_appserver.py --clear_datastore helloworld/
沒有留言:
張貼留言