#
# 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.