python 简单网站 以及sqlite 操作 BaseHTTPServer
来源:互联网 发布:恺英网络王悦垃圾 编辑:程序博客网 时间:2024/06/14 06:24
今天有需求做一个简单的http服务,
sql.py文件
最后是创建数据库的文件
根据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()
- python 简单网站 以及sqlite 操作 BaseHTTPServer
- python--BaseHTTPServer
- python SQLite数据库简单操作
- Python BaseHTTPServer 模块解析
- python BaseHTTPServer.py
- python中的BaseHTTPServer模块学习
- Python 标准库 BaseHTTPServer 中文翻译
- BaseHTTPServer
- sqlite安装以及操作
- SQLite简单操作
- Android sqlite 简单操作
- sqlite数据库简单操作
- Android sqlite 简单操作
- SQLite数据库简单操作
- sqlite 简单操作
- 简单的SQLite操作
- SQLite的简单操作
- SQLite的简单操作
- \r \n有什么区别
- APPRO AEW TRIAL VERSION OUT OF DATE
- android 简单布局素材(1)
- perl学习(1) 入门
- C/C++中的日期和时间 time_t与struct tm转换
- python 简单网站 以及sqlite 操作 BaseHTTPServer
- 开发笔记 那些年追过的图片(七):屏幕截图
- ruby::conditions => “LIKE ___%” syntax
- 在tableview的行上面显示数量小图标
- 关于jquery事件的一点疑惑
- 利用dispatch_once创建单例
- apache 模块调试
- hive数据操纵
- 数据存储之plist文件操作