python: sql server using Model,BLL,DAL
sql script:
/* 学生类:姓名、年龄、学号、成绩 班级类:班级名称、学生列表显示所有学生 根据学号查找学生 添加一个学生 删除一个学生(学生对象、学号) 根据学号升序排序 根据成绩降序排序 */ --学生表 DROP TABLE StudentList GO create table StudentList ( StudentId INT IDENTITY(1,1) PRIMARY KEY, StudentName nvarchar(50), StudentNO varchar(50), --学号 StudentBirthday datetime --学生生日 ) go insert into StudentList(StudentName,StudentNO,StudentBirthday) values(N'刘三','001','2007-12-27') go insert into StudentList(StudentName,StudentNO,StudentBirthday) values(N'王二','002','2008-2-14') go select * from StudentList go --课程名称 DROP TABLE Course GO create table Course ( CourseId INT IDENTITY(1,1) PRIMARY KEY, CourseName nvarchar(50) --课程名称 ) go insert into Course(CourseName) values(N'语文') go insert into Course(CourseName) values(N'英语') go insert into Course(CourseName) values(N'数学') go select * from Course go --班表名称 DROP TABLE GradeClass GO create table GradeClass ( ClassId INT IDENTITY(1,1) PRIMARY KEY, ClassName nvarchar(50) --班级名称 ) go insert into GradeClass(ClassName) values(N'二年级一班') go insert into GradeClass(ClassName) values(N'二年级二班') go select * from GradeClass go --成绩表 DROP TABLE StudentScore GO create table StudentScore ( ScoreId INT IDENTITY(1,1) PRIMARY KEY, StudentId int Foreign Key REFERENCES StudentList(StudentId), --学生ID 外键 CourseId int Foreign Key REFERENCES Course(CourseId), --课程ID 外键 Score float --成绩 ) go insert into StudentScore(StudentId,CourseId,Score) values(1,1,90) insert into StudentScore(StudentId,CourseId,Score) values(1,2,56) insert into StudentScore(StudentId,CourseId,Score) values(1,3,80) go insert into StudentScore(StudentId,CourseId,Score) values(2,1,92) insert into StudentScore(StudentId,CourseId,Score) values(2,2,83) insert into StudentScore(StudentId,CourseId,Score) values(2,3,78) go select * from StudentScore go ---班级学生 DROP TABLE StudentClass GO create table StudentClass ( StudentClassId INT IDENTITY(1,1) PRIMARY KEY, StudentId int Foreign Key REFERENCES StudentList(StudentId), --学生ID 外键 ClassId int Foreign Key REFERENCES GradeClass(ClassId), --班级ID 外键 ) go insert into StudentClass(StudentId,ClassId) values(1,1) go insert into StudentClass(StudentId,ClassId) values(2,1) go select * from StudentClass go -- 成绩视图 select a.*,b.StudentNO,b.StudentName,b.StudentBirthday,c.CourseName from StudentScore as a--,as a,StudentList as b,Course as c StudentClass as d,GradeClass as f LEFT JOIN StudentList as b on a.StudentId=b.StudentId LEFT JOIN Course as c on a.CourseId =c.CourseId LEFT JOIN StudentClass as d on d.StudentId=b.StudentId go -- 班级视图 select a.*,b.StudentNO,b.StudentNO,b.StudentName,d.ClassName from StudentClass as a left join StudentList as b on a.StudentId=b.StudentId left join GradeClass as d on a.ClassId=d.ClassId go
"""
StudentListInfo.py
学生类
date 2023-06-16
edit: Geovin Du,geovindu, 涂聚文
ide: PyCharm 2023.1 python 11
"""
import datetime
import sys
import os
class StudentList(object):
"""
学生类
"""
def __init__(self,StudentName:str, StudentNO:str,StudentBirthday:datetime.datetime):
self._StudentName=StudentName
self._StudentNO=StudentNO
self._StudentBirthday=StudentBirthday
self._StudentId=0
self._age=0
def __del__(self):
print(f"{self._StudentName}")
def setStudentName(self,StudentName):
self._StudentName=StudentName
def getStudentName(self):
return self._StudentName
def setStudentNO(self,StudentNO):
self._StudentNO=StudentNO
def getStudentNO(self):
return self._StudentNO
def setStudentId(self,StudentId):
self._StudentId=StudentId
def getStudentId(self):
return self._StudentId
def setStudentBirthday(self,StudentBirthday):
self._StudentBirthday=StudentBirthday
def setAge(self,age):
self._age=age
def getAge(self):
return self._age
def __str__(self):
return f"{self._StudentId},{self._StudentName},{self._StudentNO},{self._StudentBirthday}{self._age}"
"""
CourseInfo.py
课程类
date 2023-06-16
edit: Geovin Du,geovindu, 涂聚文
ide: PyCharm 2023.1 python 11
"""
class Course(object):
"""
"""
def __init__(self,CourseName:str):
self._CourseName=CourseName
self._CourseId=0
def __del__(self):
print(f"{self._CourseName}")
def setCourseId(self,CourseId):
self._CourseId=CourseId
def getCourseId(self):
return self._CourseId
def setCourseName(self,CourseName):
self._CourseName=CourseName
def getCourseName(self):
return self._CourseName
def __str__(self):
return f"CourseId:{self._CourseId},CourseName:{self._CourseName}"
"""
StudentDALListDAL.py
数据业务处理层 Data Access Layer (DAL)
SQL Server 数据库操作
date 2023-06-21
edit: Geovin Du,geovindu, 涂聚文
ide: PyCharm 2023.1 python 11
"""
import os
import sys
from pathlib import Path
import re
import pymssql #sql server
import Model.StudentListInfo
import UtilitieDB.MsSQLHelper
class StudentDal(object):
"""
数据业务处理层 学生
数据库连接可以放在这里,通过配置读取数据连接参数
"""
def __init__(self):
"""
构造函数,方法
:param strserver:
:param struser:
:param strpwd:
:param strdatabase:
"""
self._strserver = ""
self._struser = ""
self._strpwd = ""
self._strdatabase =""
def selectSql(self):
"""
查询数据 self._strserver, self._struser, self._strpwd, self._strdatabase
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper()
row=myms.execute('select * from DuStudentList;')
return row
def selectSqlOrder(self,order:str)->list:
"""
:param order: studenName desc/asc
:return:
"""
students=[]
myms = UtilitieDB.MsSQLHelper.MsSqlHelper()
strsql=f"select * from DuStudentList order by {order};"
row=myms.execute(f'select * from DuStudentList order by {order};')
return row
def selectIdSql(self,StudentId:int):
"""
:param StudentId: 主键ID
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper()
row=myms.execute(f'select * from DuStudentList where StudentId={StudentId};')
return row
def selectProc(self):
"""
存储过程
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper()
args = ()
row = myms.executeCallProc("proc_Select_StudentListAll",args)
return row
def selectIdProc(self,StudentId:int):
"""
存储过程
:param StudentId: 主键ID
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper()
args = (StudentId,)
row = myms.executeCallProc('dbo.proc_Select_StudentList', args)
return row
def addSql(self,info:Model.StudentListInfo.StudentList):
"""
添加,要考虑添加返回ID值
:param info:学生实体类
:return:
"""
myms=UtilitieDB.MsSQLHelper.MsSqlHelper();
column=("StudentName","StudentNO","StudentBirthday")
vales=[info.getStudentName(),info.getStudentNO(),info.getStudentBirthday()]
myms.insertByColumnaAndValues("dbo.DuStudentList",column,vales)
def addProc(self,info:Model.StudentListInfo.StudentList):
"""
添加,要考虑添加返回ID值
:param info:学生实体类
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper();
args=(info.getStudentName(),info.getStudentNO(),info.getStudentBirthday())
myms.insertCallProc("dbo.proc_Insert_StudentList",args)
def addOutProc(self,info:Model.StudentListInfo.StudentList):
"""
添加,要考虑添加返回ID值
:param info:学生实体类
:return: 返回增加的学生的ID
"""
id=0
myms = UtilitieDB.MsSQLHelper.MsSqlHelper();
outid = pymssql.output(int)
args = (info.getStudentName(), info.getStudentNO(), info.getStudentBirthday(),outid)
print(args)
id=myms.insertOutCallProc("dbo.proc_Insert_StudentListOutput", args)
return id
def editSql(self,info:Model.StudentListInfo.StudentList):
"""
:param info:学生实体类
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper();
args = {"StudentName":f"{info.getStudentName()}","StudentNO":f"{info.getStudentNO()}","StudentBirthday":f"{info.getStudentBirthday()}"} #"StudentId":6
where = f"StudentId={info.getStudentId()}" #
#print(args,where)
myms.updateByKeyValues("DuStudentList",where,args)
def editProc(self, info: Model.StudentListInfo.StudentList):
"""
:param info: 学生实体类
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper();
args = (info.getStudentId(),info.getStudentName(),info.getStudentNO(),info.getStudentBirthday())
myms.updateProc("[dbo].[proc_Update_StudentList]",args)
def delSql(self,StudentId:int):
"""
sql语句删除
:param StudentId: 主键ID
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper();
where={f"StudentId":StudentId}
myms.deleteByKeyValues("DuStudentList",where)
def delProc(self, studentId):
"""
删除 存储过程 删除多个ID,后面增加
:param StudentId: 主键ID
:return:
"""
myms = UtilitieDB.MsSQLHelper.MsSqlHelper();
args =studentId
myms.deleteProc("dbo.proc_Delete_StudentList",args)
"""
StudentListBLL.py
业务层 Business Logic Layer (BLL)
date 2023-06-19
edit: Geovin Du,geovindu, 涂聚文
ide: PyCharm 2023.1 python 11
"""
import os
import sys
from pathlib import Path
import re
import pymssql #sql server
from datetime import date
import DAL.StudentListDAL
import DAL.ConfigDAL
import Model.StudentListInfo
class StudentBll(object):
"""
学生信息操作业务类
"""
dal = DAL.StudentListDAL.StudentDal()
"""
类属性 操作DAL
"""
def __init__(self):
"""
"""
self._name = "geovindu"
def __del__(self):
print(f"{self._name}挂失了")
def selectSql(cls)->list:
"""
元组数据
:return: list 学生列表
"""
students = []
data = cls.dal.selectSql()
stus = list(data) # 如C# 强制转换
'''
for a in data:
for i in a:
print("II",i)
'''
for ii in stus:
for i in ii:
students.append(Model.StudentListInfo.StudentList(i[0],i[1],i[2],i[3]))
return students
def selectSqlOrder(cls, order: str)->list:
"""
元组数据
:param order: studenName desc/asc
:return:
"""
studentsorder = []
students=[]
data = cls.dal.selectSqlOrder(order)
(studentsorder) = data # 如C# 强制转换
'''
for i in range(len(studentsorder)):
print("rrr",type(studentsorder[i]))
for duobj in studentsorder[i]:
print(type(duobj))
print(duobj)
'''
for obj in studentsorder:
for i in obj:
students.append(Model.StudentListInfo.StudentList(i[0], i[1], i[2], i[3]))
return students
def selectIdSql(cls,StudentId:int)->list:
"""
:param StudentId:学生ID
:return:
"""
students = []
data = cls.dal.selectIdSql(StudentId)
students=data
for ii in students:
for i in ii:
students.append(Model.StudentListInfo.StudentList(i[0],i[1],i[2],i[3]))
return students
def selectProc(cls):
"""
:return:
"""
students=[]
data = cls.dal.selectProc()
for i in data:
students.append(Model.StudentListInfo.StudentList(i[0],i[1],i[2],i[3]))
return students
def selectIdProc(cls,StudentId:int)->list:
"""
:param StudentId:
:return:
"""
students = []
data = cls.dal.selectIdProc(StudentId)
for i in data:
students.append(Model.StudentListInfo.StudentList(i[0],i[1],i[2],i[3]))
return students
def addSql(cls,info:Model.StudentListInfo.StudentList):
"""
:param info:学生实体类
:return:
"""
cls.dal.addSql(info)
def addProc(cls,info:Model.StudentListInfo.StudentList):
"""
:param info:学生实体类
:return:
"""
#print(info)
cls.dal.addProc(info)
def addOutProc(cls,info:Model.StudentListInfo.StudentList)->int:
"""
:param info: 学生实体类
:return: 返回增加的学生ID
"""
print(info)
return cls.dal.addOutProc(info)
def editSql(cls,info:Model.StudentListInfo.StudentList):
"""
:param info:学生实体类
:return:
"""
#print(info)
cls.dal.editSql(info)
def editProc(cls, info: Model.StudentListInfo.StudentList):
"""
:param info:学生实体类
:return:
"""
cls.dal.editProc(info)
def delSql(cls, StudentId: int):
"""
:param StudentId:
:return:
"""
cls.dal.delSql(StudentId)
def delProc(cls, StudentId):
"""
:param StudentId:
:return:
"""
cls.dal.delProc(StudentId)


哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号