数据库:通过Web页面对数据库进行增删改查操作
结合自己所选的应用案例,至少完成一个简单案例,Web页面的操作应包括增、删、改、查,查询结果以表格或表单形式展现。整个系统架构至少应包括前端、Web服务器、应用服务器、数据库服务器。Web服务器和应用服务器可以合在一起,也可以根据硬件资源情况分开。
目录
任务要求
结合自己所选的应用案例,至少完成一个简单案例,Web页面的操作应包括增、删、改、查,查询结果以表格或表单形式展现。
整个系统架构至少应包括前端、Web服务器、应用服务器、数据库服务器。Web服务器和应用服务器可以合在一起,也可以根据硬件资源情况分开。
整体框架
所用语言:python
所用框架:web.py, pymysql
UI(表现层): 主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。
BLL:(业务逻辑层): UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。
DAL:(数据访问层): 与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)
‘template’文件夹存放web文件,是表面层,其中
home:主页,用于用户选择增、删、改、查的操作
add.html: 增操作的界面
delete.html: 删操作的界面
update.html: 改操作的界面
select.html: 查操作的界面
show.html: 对查到的结果进行展示
successfully.html: 对操作成功的提示
Unsuccessfully.html: 对操作不成功的提示
‘connection.py’存放类代码,用于接收从网页传递的消息,并发送相应的回应,属于业务逻辑层。
import web
'''
recieve message and turn to corresponding web page
'''
class turn_add:
def POST(self):
raise web.seeother('/add_web')
class turn_delete:
def POST(self):
raise web.seeother('/delete_web')
class turn_update:
def POST(self):
raise web.seeother('/update_web')
class turn_select:
def POST(self):
raise web.seeother('/select_web')
class returnback:
def POST(self):
raise web.seeother('/')
‘operation.py’存放增、删、改、查的操作类,是数据访问层。以增操作为例:
class add:
def POST(self):
print('add: ', end='')
i = web.input()
print(i.bank_id, i.bank_name, i.bank_balance, end='')
sql = f"""INSERT INTO BANK VALUES{int(i.bank_id), i.bank_name, float(i.bank_balance)}"""
print(sql)
try:
conn = pymysql.connect(user='root', password='你的密码', database='bank') # connect to mysql
cursor = conn.cursor(pymysql.cursors.DictCursor) # cursor
cursor.execute(sql) # execute sql
conn.commit()
print(" successfully!")
pickle.dump('Successfully add!', open('results', 'wb'))
tag = 0
conn.close()
except:
print(" Add error!")
pickle.dump(['Add error!'], open('results', 'wb'))
tag = 1
suc_or_unsuc(tag)
‘main.py’主函数,里面含有打开网页的类,还有urls,以及网页应用的运行。
import pickle
import web
from connection import *
from operation import *
class home:
'''
open the home web
'''
def GET(self):
return render.home()
class add_web:
'''
open the add web
'''
def GET(self):
return render.add()
class delete_web:
'''
open the delete web
'''
def GET(self):
return render.delete()
class update_web:
'''
open the update web
'''
def GET(self):
return render.update()
class select_web:
'''
open the select web
'''
def GET(self):
return render.select()
class show_web:
'''
open the show web to show the resluts after select operation
'''
def GET(self):
results = pickle.load(open('results', 'rb'))
return render.show(results)
class successfully_web:
'''
open the sucessfully web to show the operation successfully complete
'''
def GET(self):
results = pickle.load(open('results', 'rb'))
return render.successfully(results)
class unsuccessfully_web:
'''
open the unsucessfully web to show the operation unsuccessfully complete
'''
def GET(self):
results = pickle.load(open('results', 'rb'))
return render.unsuccessfully(results)
if __name__ == "__main__":
urls = (
'/', 'home',
'/add', 'add',
'/delete', 'delete',
'/update', 'update',
'/select', 'select',
'/add_web', 'add_web',
'/delete_web', 'delete_web',
'/update_web', 'update_web',
'/select_web', 'select_web',
'/show_web', 'show_web',
'/successfully_web', 'successfully_web',
'/unsuccessfully_web', 'unsuccessfully_web',
'/turn_add', 'turn_add',
'/turn_delete', 'turn_delete',
'/turn_update', 'turn_update',
'/turn_select', 'turn_select',
'/returnback', 'returnback'
)
render = web.template.render('./template')
app = web.application(urls, globals())
app.run()
目标数据
所实现的web对数据库的访问,目标数据是bank数据库中的bank表:
实现的是对上表的增、删、改、查。
实验成果
主页
查
查全部数据的全部属性
查部分数据的部分属性
删
删除表格中存在的数据
当删除不存在的数据时
增:
增加新数据时
增加的数据主键与已存在的数据冲突时
改
当更改的数据存在于表格时
将id为4的银行名字改成‘中国工商银行’,余额改为其他数。
当更改的数据不存在于表格时
更多推荐
所有评论(0)