最近改一个小程序,需要用到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删除。