python 简单网站 以及sqlite 操作 BaseHTTPServer

来源:互联网 发布:恺英网络王悦垃圾 编辑:程序博客网 时间:2024/06/14 06:24

今天有需求做一个简单的http服务,

根据url 返回数据库查询结果即可 

10.20.9.25:8123/validate?name=asd&passwd=123456  验证用户

10.20.9.25:8123/register?name=asd&passwd=123456 添加用户

启动服务 python httpserverdemo.py 8123    不输入参数默认为8000

10.20.9.25:8123/validate?name=sunlei&passwd=123456

10.20.9.25:8123/register?name=sunlei&passwd=123456

如果部署在新的环境下,运行 python createdb.py  建立数据库

httpserverdemo.py文件

#encoding=utf-8''''''from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServerimport io,shutil  import urllib,timeimport getopt,stringimport sysimport sqlite3from  sql import sqloptionclass MyRequestHandler(BaseHTTPRequestHandler):    def do_GET(self):        self.process(2)    def do_POST(self):        self.process(1)            def process(self,type):                content =""        if type==1:#post方法,接收post参数            datas = self.rfile.read(int(self.headers['content-length']))            datas = urllib.unquote(datas).decode("utf-8", 'ignore')#指定编码方式            datas = transDicts(datas)#将参数转换为字典            if datas.has_key('data'):                content = "data:"+datas['data']+"\r\n"                        if '?' in self.path:            query = urllib.splitquery(self.path)            print query[0]            print query[1]            action = query[0]                        if query[1]:#接收get参数                queryParams = {}                for qp in query[1].split('&'):                    kv = qp.split('=')                    queryParams[kv[0]] = urllib.unquote(kv[1]).decode("utf-8", 'ignore')                print queryParams                if action == '/register':                    print 'register get '                    a=sqloption()                    if queryParams['name'] and queryParams['passwd']:                        if a.sqlinsert(queryParams['name'],queryParams['passwd'])==True:                            content ='1'                        else:                            content ='0'                     else:                        content ='0'                     a.close()                elif action == '/validate':                    print 'validate get'                    a=sqloption()                    if queryParams['name'] and queryParams['passwd']:                        if a.sqlselect(queryParams['name'],queryParams['passwd'])==True:                            content ='1'                        else:                            content ='0' #validate false                    else:                        content='0'#chanshu buzhengque                    a.close()                                                      #指定返回编码            enc="UTF-8"              content = content.encode(enc)                      f = io.BytesIO()              f.write(content)              f.seek(0)              self.send_response(200)              self.send_header("Content-type", "text/html; charset=%s" % enc)              self.send_header("Content-Length", str(len(content)))              self.end_headers()              shutil.copyfileobj(f,self.wfile)   def transDicts(params):    dicts={}    if len(params)==0:        return    params = params.split('&')    for param in params:        dicts[param.split('=')[0]]=param.split('=')[1]    return dicts       if __name__=='__main__':    #python httpserverdemo.py 8123     if len(sys.argv)>1:        serverport=int(sys.argv[1])    else:        serverport=8000    print serverport    try:        server = HTTPServer(('', serverport), MyRequestHandler)        print 'started httpserver...'        server.serve_forever()    except KeyboardInterrupt:        server.socket.close()    pass

sql.py文件

#encoding=utf-8import sqlite3sqlpath="E:\\test.db"#class sqloption:    def __init__(self):        self.conn=sqlite3.connect(sqlpath)        self.cu = self.conn.cursor()    def create(self):        cu=self.cu        cu.execute(("""create table user ( name varchar(50) primary key,  passwd varchar(50) UNIQUE )"""))            def sqlinsert(self,name,passwd):        if self.sqlexist(name)!=False:            print 'user is exist'            return False        else:            t=(name,passwd)            self.cu.execute("insert into user values(?,?)",t)             self.conn.commit()            print  '%s insert ' %name            return True    def sqlexist(self,name):        t=(name,)             self.cu.execute("select * from user where name =?",t)        a=self.cu.fetchone()        if a :            return a        else:            print  "user name %s not exist" % name            return False    def sqlselect(self,name,passwd):        a=self.sqlexist(name)        if a:            if a[1]==passwd:                print '校验成功,密码正确'                return True            else:                print '密码不正确'                return False    def close(self):        self.conn.close() 

最后是创建数据库的文件

create.py


from  sql import sqloptiona=sqloption()a.create()a.close()


原创粉丝点击