数据库:通过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的银行名字改成‘中国工商银行’,余额改为其他数。

当更改的数据不存在于表格时

完整代码:(43条消息) 数据库:通过Web页面对数据库进行增删改查操作资源-CSDN文库 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>