最近改一个小程序,需要用到google云上的数据库功能。学习了一点相关知识。

对于应用来说,首先要app.yaml申明自己

application: a
version: 1
runtime: python
api_version: 1

handlers:
- url:/xx
  script: xx.py
- url:/yy
  script: xx.py
- url:/zz.py
  script: zz.py

 第一部分四行比较简单,handlers这里是告诉云,访问连接后跟的路径用哪一个脚本去处理,比如在这里,application叫做a,那么访问a.appspot.com/xx,是用xx.py处理,如果访问a.appspot.com/yy,也是用xx.py处理。如果是访问a.appspot.com/zz.py,则用zz.py处理。

然后,云就会执行相应的python文件

#! /usr/bin/env python
#
coding=utf-8
import wsgiref.handlers,
from google.appengine.ext import webapp
from google.appengine.api import db

def data_test(db.Model):
link=db.LinkProperty()
method=db.StringProperty()
header=db.TextProperty()
date=db.DateTimeProperty(auto_now_add=True)
data=db.STringProperty(multiline=True)

class Main(webapp.RequestHandler):
def post(self):
...
def get(self):
...

class Minor(webapp.RequestHandler):
def post(self):
...
def get(self):
...


def main():
application=webapp.WSGIApplication([("/xx",Main),("/yy",Minor)])
wsgiref.handlers.CGIHandler().run(application)

if __name__=="__main__":
main()

执行py文件以后,python文件通过

application=webapp.WSGIApplication([("/xx",Main),("/yy",Minor)])

这句话决定调用哪个类来处理请求,在这里访问/xx的用Main,访问/yy的用Minor,然后相应调用各个类下的post,get方法来给出页面。

对于数据库gql来说,则通过

def data_test(db.Model):
link=db.LinkProperty()
method=db.StringProperty()
header=db.TextProperty()
date=db.DateTimeProperty(auto_now_add=True)
data=db.STringProperty(multiline=True)
data1=data_test(parent=dataft)
data.link=...
data.put()

来定义数据库自己,首先类data_test是从db.Model继承来的,然后在这个类里定义了各个key,在赋值以后,通过put更新进数据库
查询则可以通过db.GqlQuery命令

datas=db.GqlQuery("SELECT * FROM data_test WHERE ANCESTOR IS :1 ORDER BY date DESC",dataft)
for i in datas:
i.link....
删除
db.delete(i)

删除则可以通过db.delete删除。