需要创建的表的结构
# 表1:班级表 表2:学生表 表3:老师表 表4:老师班级关系表
id name id sname cid(FK) id tname id tid(FK) cid(FK)
1 初三一班 1 小明 1 1 数学老师 1 1 1
2 初三二班 2 语文老师 2 1 2
3 2 2
使用 Navicat Premium 创建数据库classProject
。创建class表
、student表
、teacher表
、tearcher2class表
。创建相应表字段名。
- class表:
-
id 为自增 主键
-
id 为自增 主键
- student表:
- id 为自增 主键
-
cid 和class表id关联
- teacher表:
-
id 为自增 主键
-
id 为自增 主键
- tearcher2class表:
- id 为自增 主键
- cid 和class表id关联
-
tid 和tearcher表id关联
封装pymsql
方便后续操作
class SQLHelper(object):
def __init__(self):
self.connect()
#连接
def connect(self):
self.conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', db='classProject',
charset='utf8')
self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
#获取列表
def get_list(self,sql,args=[]):
self.cursor.execute(sql, args)
result = self.cursor.fetchall()
return result
#获取一条
def get_one(self,sql,args=[]):
self.cursor.execute(sql, args)
result = self.cursor.fetchone()
return result
#修改,删除
def modify(self,sql,args=[]):
self.cursor.execute(sql, args)
self.conn.commit()
#增加并返回新增的id
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('insert into tearch2class(tid, cid) VALUES (%s,%s)',[(1,2),(2,3),(3,5)])
self.cursor.executemany(sql,args)
self.conn.commit()
#关闭
def close(self):
self.cursor.close()
self.conn.close()
SQLHelper使用方法
obj = SQLHelper()
# 查询全部班级列表
class_list = obj.get_list('select id,name from class')
# 新增一条班级数据
obj. modify("insert into class(name) values(%s)", ["初三一班", ])
# 根据id获取班级
class = obj.get_one("select id,name from class where id = %s",[ id,])
# 根据id修改班级
obj.modify("update class set name = %s where id = %s", [newName, id, ])
# 新增班级并返回该新增班级的id
class_id = obj. create("insert into class(name) values(%s)", ["初三一班", ])
# 删除班级
obj.modify("delete from class where tid = %s", id)
obj.close()