##MySQL数据准备
#班级表 create table classes( id int auto_increment primary key, name varchar(32) not null default '' )engine=Innodb charset=utf8; #学生表 create table student( id int auto_increment primary key, name varchar(32) not null default '', class_id int not null default 1, constraint fk_student_classes foreign key(class_id) references classes(id) )engine=Innodb charset=utf8; #教师表 create table teacher( id int auto_increment primary key, name varchar(32) not null default '' )engine=Innodb charset=utf8; #关联表 create table teacher2class( id int auto_increment primary key, t_id int not null default 1, c_id int not null default 1, constraint fk_teacher_classes1 foreign key(t_id) references teacher(id), constraint fk_classes foreign key(c_id) references classes(id) )engine=Innodb charset=utf8;
##数据库封装成类
为了提高数据库的操作速度,避免重复的进入和退出,我们可以把一些常用的数据库的操作封装成一个类。 把数据库操作写成函数:每次都得连接数据库一次连接一次提交,重复操作浪费时间 把数据库操作写成类:一次连接可以多次提交,最佳重复操作时不需要关闭数据库 import pymysql class Sqlmanager: def __init__(self): self.connect() #实例化后自动执行此函数 def connect(self):#此时进入数据库,游标也已经就绪 self.conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='123',db='db58',charset='utf8') self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor) def get_all(self,sql,args=None): self.cursor.execute(sql,args) result = self.cursor.fetchall() return result def get_one(self,sql,args=None): self.cursor.execute(sql, args) result = self.cursor.fetchone() return result def add_num(self,sql,args=None): self.cursor.execute(sql, args) self.conn.commit() def del_num(self,sql,args=None): self.cursor.execute(sql,args) self.conn.commit() def up_num(self,sql,args=None): self.cursor.execute(sql, args) self.conn.commit()
##Django框架 单表操作细节(班级表和教师表)
#两种方式增删改查 1、新url的方式: 该方式通过前端不同的请求有不同的url来进行操作 2、模态对话框的方式: 利用ajax不刷新页面方式进行操作