简单flask实现增删改查——python

文件的层级关系:

  • work
    • control

      • blueprint.py
    • dao

      • basedao.py
      • pymysql.json
      • userdao.py
    • entity

      • user.py
    • service

      • userservice.py
    • static

      • css
      • js
    • templates

      • index.html
      • login.html
      • message.html
      • regist.html
    • app.py


app.py

from flask import Flask,render_template

from controll.blueprint import blue

app = Flask(__name__)
app.config['DEBUG']=True
app.config['SECRET_KEY'] = 'AABBqwtgdger'
# 蓝图的差分
app.register_blueprint(blue)
@app.route('/')
def hello_world():
    return render_template('index.html')
# 整个程序的入口
if __name__ == '__main__':
    app.run(debug=True)

blueprint.py

from flask import Blueprint,request,render_template,session,Response
from service.userservice import UserService
import json
from entity.user import User
blue = Blueprint('blue',__name__)
userService = UserService()  # 数据操作层
# 控制层
@blue.route('/login.do',methods=['POST','GET'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    else:
        userDate = request.get_data() # 获取ajax传来的数据
        userDict = json.loads(userDate)
        name = userDict.get('username')
        passwd = userDict.get('password')
        result = userService.findUserByUserName(name)  # 数据的操作
        dicts = {
   }
        if result and result[0][2]==passwd: # 进行密码和姓名的验证
            session['username'] = name
            dicts = {
   'code': 1}
        else:
            dicts = {
   'code': 0}
        return json.dumps(dicts)

# 注销按钮
@blue.route('/logout.do',methods=['POST','GET'])  # url路由
def logout():
    session.clear()
    resp = Response(render_template('index.html'))  # 对模板的渲染
    return resp

@blue.route('/regist.do',methods=['POST','GET'])  # url路由
def regist():
    if request.method == 'GET':
        resp = Response(render_template('regist.html'))
        return resp
    else:
        userDate = request.get_data()
        userDict = json.loads(userDate)
        name = userDict.get('username')
        result = userService.findUserByUserName(name)
        dicts = {
   }
        if result:
            dicts = {
   'code': 1}
        else:
            dicts = {
   'code': 0}
        return json.dumps(dicts)
# 注册界面
@blue.route('/adduser.do',methods=['POST','GET'])  # url路由
def adduser():
    if request.method == 'GET':
        resp = Response(render_template('regist.html'))
        return resp
    else:
        user = User()
        user.username = request.form.get('username')
        user.userpwd = request.form.get('userpwd')
        user.usersex = request.form.get('sex')[0]
        user.userage = request.form.get('age')
        user.userqq = request.form.get('qq')
        user.userphone = request.form.get('phone')
        hobby = request.form.getlist('hobby')
        flage = request.form.get('flages')
        n = ''
        for i in hobby:
            n = n+i
        user.userhobby = n
        result = userService.createUser(user)
        print(result)

        if (result > 0):
            # return render_template('alert(注册成功')
            return '注册成功'
        else:
            return '注册失败'



@blue.route('/message.do', methods=['POST', 'GET'])  # url路由
def message():
    if request.method == 'GET':
        user = User()
        userlist = userService.findUserList(user)
        return Response(render_template('message.html',userlist=userlist,flage=True))

    else:
        dicts = {
   'code': 1}

        return json.dumps(dicts)

@blue.route('/confirm1.do', methods=['POST', 'GET'])  # url路由
def comfirm1():
    userDate = request.get_data()
    userDict = json.loads(userDate)

    userid = userDict.get('userid')
    username = userDict.get('username')
    userpwd = userDict.get('userpwd')
    userage = userDict.get('userage')
    usersex = userDict.get('usersex')
    userqq = userDict.get('userqq')
    userphone = userDict.get('userphone')
    userhobby = userDict.get('userhobby')


    user = User()
    user.userid=userid
    user.username=username
    user.userpwd=userpwd
    user.userage = userage
    user.usersex = usersex
    user.userqq = userqq
    user.userphone=userphone
    user.userhobby=userhobby


    result = userService.updateUser(user)
    dicts = {
   }
    if result:
        dicts = {
   'code': 1}
    else:
        dicts = {
   'code': 0}
    return json.dumps(dicts)
# 删除按钮
@blue.route('/dell.do', methods=['POST', 'GET'])  # url路由
def dell():
    userDate = request.get_data()
    userDict = json.loads(userDate)

    userid = userDict.get('userid')
    result = userService.removeUser(userid)
    dicts = {
   }
    if result:
        dicts = {
   'code': 1}
    else:
        dicts = {
   'code': 0}
    return json.dumps(dicts)
#
def obj_json(obj):
    return {
   
            'userid' : obj.userid,
            'username' : obj.username,
            'usersex' : obj.usersex,
            'userqq' : obj.userqq,
            'userphone' : obj.userphone,
            'userhobby' : obj.userhobby,
            'userpwd' : obj.userpwd,
            'userage' : obj.userage
    }
@blue.route('/searchinfo.do', methods=['POST', 'GET'])  # url路由
def searchinfo():
    userDate = request.get_data()
    userDict = json.loads(userDate)

    username = userDict.get('username')
    usersex = userDict.get('usersex')

    # 换成一个字典
    user = User()
    user.username = username
    user.usersex = usersex

    result = userService.findUserList(user)

    if result:
        return json.dumps(result,default=obj_json)  # json默认无法对user对象进行操作 定义obj_json方法进行格式规定
        # dicts = {'code': 1, 'user': result}
    else:
        return json.dumps({
   'code': 0})
        # dicts = {'code': 0}


basedao.py

# 引入pymysql
import pymysql
import json
import logging
import os

class BaseDao(): # DAO: database access object

    def __init__(self, configFile='pymysql.json'):
        self.__connection = None
        self.__cursor = None
        self.__config = json.load(open(os.path.dirname(__file__) + os.sep + configFile, 'r'))  # 通过json配置获得数据的连接配置信息
        print(self.__config)
        pass

    # 获取数据库连接的方法
    def getConnection(self):
        # 当有连接对象是,直接返回连接对象
        if self.__connection:
            return self.__connection
        # 否则通过建立新的连接对象
        try:
            self.__connection = pymysql.connect(**self.__config)
            return self.__connection
        except pymysql.MySQLError as e:
            print("Exception:" + str(e))
            pass
        pass

    # 用于执行sql语句的通用方法 # sql注入
    def execute(self, sql, params=None):
        try:
            self.__cursor = self.getConnection().cursor()
            # execute在执行delete update  insert 返回int值,返回的对数据里的数据修改的条数
            result = self.__cursor.execute(sql, params)
            return result
        except (pymysql.MySQLError, pymysql.DatabaseError, Exception) as e:
            print("出现数据库访问异常:" + str(e))
            self.rollback()
            pass
        finally:
            pass
        pass

    def fetch(self):
        if self.__cursor:
            return self.__cursor.fetchall()
        pass

    def commit(self):
        if self.__connection:
            self.__connection.commit()
        pass

    def rollback(self):
        if self.__connection:
            self.__connection.rollback()
        pass

    def getLastRowId(self):
        if self.__cursor:
            return self.__cursor.lastrowid
        pass

    def close(self):
        if self.__cursor:
            self.__cursor.close()
        if self.__connection:
            self.__connection.close()
        pass

    pass



userdao.py

from dao.basedao import BaseDao
class UserDao(BaseDao):
    def findUserByUserName(self,userName):
        try:
            sql = "select * from user where user_name=%s"
            self.getConnection()
            self.execute(sql,(userName,))
            result = self.fetch()
            return result
        finally:
            self.close()

    def findUserByUserId(self, userid):
        try:
            sql = "select * from user where user_id=%s"
            self.getConnection()
            self.execute(sql, (userid,
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值