cczhy

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
添加老师
def add_teacher(request):
    if request.method == 'GET': #获取班级列表,以完善下拉框的值
        sqlhelper.get_list("select id,title from class",[])
        return render(request,'add_teacher.html',{'class_list':class_list})
    else: #POST方法是提交添加老师的表单处理
        name = request.POST.get('name')
        class_ids = request.POST.getlist('class_ids') #获取多选值得时候使用getlist函数,否则使用get函数
        teacher_id = sqlhelper.create("insert into teacher(name) value(%s)',[name,])
        obj.sqlhelper.SqlHelper()
        data_list = []
        for cls_id in class_ids:
            temp = (teacher_id,cls_id,)
            data_list.append(temp)
        obj.multiple_modify("insert into techer2class(teacher_id,class_id) values(%s,%s)',data_list)
        obj.close()
        return redict('/teacers/')


创建add_teacher.html文件:
<h1>添加老师</h1>
<form method="POST" action="/add_teacher/">
<p><input type="text" name="name" placeholder="老师姓名" /></p>
<p>
<select multiple size="10" name="class_ids">
{% for item in class_list %}
    <option value="{{ item.id }}">{{ item.title }}</option>
{% endfor %}
</select>
</p>
<input type="submit" value="提交" />
</form>

重新定义sqlhelper.py
def modify(sql,args):
    conn = pymysql.connect(host,port,user,password,db,charset)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute(sql,args)
    conn.commit()
    cursor.close()
    conn.close()

def create(sql,args):
    conn = pymysql.connect(host,port,user,password,db,charset)
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cursor.execute(sql,args)
    conn.commit()
    last_row_id = cursor.lastrowid
    cursor.close()
    conn.close()
    return last_row_id

def get_list(sql,args):
    conn=pymysql.connect(...)
    cursor = conn.cursor(cursor=pymysql.cursor.DictCursor)
    cursor.execute(sql,args)
    result = cursor.fetchall()
    cursor.close()
    conn.close()
    return result

def get_one(sql,args):
    conn = pymysql.connect(...)
    cursor = conn.cursor(cursor=pymysql.cursor.DictCursor)
    cursor.execute(sql,args)
    result = cursor.fetchone()
    cursor.close()
    conn.close()
    return result


class SqlHelper((object):
    def __init__(self): #实例化类对象的时候会自动执行
        self.connect()
    def connect(self):
        self.conn = pymysql.connect(...)
        self.cursor = self.conn.cursor(cursor=pymysql.cursor.DictCursor)
    def get_list(self,sql,args):
        self.cursor.execute(sql,args)
        result = self.cursor.fetchall()
        return result
    def modify(self,sql,args):
        self.cursor.execute(sql,args)
        self.conn.commit()
    def create(self,sql,args):
        self.cursor.execute(sql,args)
        self.conn.commit()
        return self.cursor.lastrowid
    def multiple_modify(self,sql,args):
        self.cursor.executemany(sql,args)
        self.conn.commit()
    def close(self):
        self.cursor.close()
        self.conn.close()
定义好sqlhelper类后,按照如下方法使用,这样可以避免每次都conn数据库,减少时间和资源消耗。
obj = SqlHelper()
obj.multiple_modify()
obj.get_list()
obj.close()

 

posted on 2020-12-25 05:55  cczhy  阅读(66)  评论(0)    收藏  举报