# # filename: persons.py # import sys import sqlite3 # management of user's data # struct of table aa: id (int), name (varchar) class person: db = object() # nonlocal variable db_op = object() # nonlocal variable is_open = False def __init__(self): self.is_open = False self.db_open() def db_open(self): if (self.is_open == False): try: self.db = sqlite3.connect("./db/sqlite_db.db",check_same_thread = False) self.db_op = self.db.cursor() except Exception, e: self.db.close() self.is_open = False else: self.is_open = True def list(self): self.db_open() if (self.is_open == False): return "Error happens with database" try: self.db_op.execute("select * from aa") except Exception, e: self.db.close() self.is_open = False return e else: return self.db_op.fetchall() def add(self, id, name): self.db_open() if (self.is_open == False): return "Error happens with database" try: sql = "insert into aa values({0}, '{1}')".format(id, name) print sql self.db_op.execute(sql) self.db.commit() except Exception, e: self.is_open = False self.db.close() return e return "The new user has been joined. id = {0}, name = {1}!".format(id, name) def delete(self, id=0): self.db_open() if (self.is_open == False): return "Error happens with database" try: if (id == 0): self.db_op.execute("delete from aa"); else: self.db_op.execute("delete from aa where id={0}".format(id)) except Exception, e: self.db.close() self.is_open = False return e else: self.db.commit() return "The data is deleted successfully."
# # filename: webserv.py # import sys import web import persons urls = ( '/(.*)/', 'redirect', '/user/list', 'listusers', '/user/add', 'adduser', '/user/delete', 'deleteuser' ) app = web.application(urls, globals()) u = persons.person() class redirect: def GET(self, path): web.seeother('/' + path) class listusers: def GET(self): return u.list() class adduser: def GET(self): input = web.input() id = input.get('id', 0) name = input.get('name', '') if (id == 0 or name == ''): return('Please provide the id and the name') else: return u.add(id, name) class deleteuser: def GET(self): input = web.input() id = input.get('id', 0) return u.delete(id) if __name__ == "__main__": app.run()
两个文件代码如上:persons.py 及 webserv.py
数据库:sqlite3
python版本:2.7
运行:E:\workshop\python>python webserv.py
测试:
1. 新增 输入:http://localhost:8080/user/add?id=3&name=wo 返回:
The new user has been joined. id = 3, name = wo!
2. 查询 输入:http://localhost:8080/user/list 返回:
[(1, u'wo'), (2, u'wo'), (3, u'wo')]
3. 删除 输入:http://localhost:8080/user/delete?id=1 返回:
The data is deleted successfully.