概述
前几日,闲来无事,写了一个python来连接数据库的模板案例,仿照传统MVC的例子。代码如下:
DBUtil
import pymysqlclass DBUtil:__db = None__obj = None__init_flag = True__cursor = Nonedef __new__(cls, *args, **kwargs):if cls.__obj is None:cls.__obj = object.__new__(cls)return cls.__objdef __init__(self):if DBUtil.__init_flag:# 创建数据库DBUtil.__db = pymysql.connect(host='127.0.0.1', user='root', password='XXXXX', database='labex', port=3306)# 创建游标对象cursorDBUtil.__cursor = DBUtil.__db.cursor()def execute(self,sql, *params):try:if sql:raise RuntimeError('"你传入的SQL为空或是一个查询语句"')if len(params) > 0:DBUtil.__cursor.execute(sql, params)DBUtil.__db.commit()else:DBUtil.__cursor.execute(sql)DBUtil.__db.commit()except Exception as e:print(e)DBUtil.__db.rollback()print("执行语句失败")def executeQuery(self,sql, *params):try:if not sql:raise RuntimeError('"你传入的SQL为空"')if len(params) > 0:DBUtil.__cursor.execute(sql, params)desc = DBUtil.__cursor.description # 获取字段的描述,data_dict = [dict(zip([col[0] for col in desc], row)) for row in DBUtil.__cursor.fetchall()] # 列表表达式把数据组装起来return data_dictelse:print("ssss")DBUtil.__cursor.execute(sql)desc = DBUtil.__cursor.description # 获取字段的描述,data_dict = [dict(zip([col[0] for col in desc], row)) for row in DBUtil.__cursor.fetchall()] # 列表表达式把数据组装起来return data_dictexcept Exception as e:print(e)DBUtil.__db.rollback()print("执行语句失败")
StudentItemDao
from dao.DBUtil import DBUtil
from entity.StudentItem import StudentItemclass StudentItemDao:@staticmethoddef listAllStudentItems():dBUtil = DBUtil()sql = "select * from t_student_item"studentItemList = []for row in dBUtil.executeQuery(sql):studentItem = StudentItem()studentItem.set_student_item_id(row.get("student_item_id"))studentItem.set_student_id(row.get("student_id"))studentItem.set_item_id(row.get("tem_id"))studentItem.set_score(row.get("score"))studentItem.set_score_flag(row.get("score_flag"))studentItem.set_fill_time(row.get("fill_time"))studentItem.set_content(row.get("content"))studentItemList.append(studentItem)return studentItemList
StudentItemLogDao
from dao.DBUtil import DBUtil
from entity.StudentItemLog import StudentItemLogclass StudentItemLogDao:@staticmethoddef listAllStudentItemLogs():dBUtil = DBUtil()sql = "select * from t_student_item_log"studentItemLogList = []for row in dBUtil.executeQuery(sql):studentItemLog = StudentItemLog()studentItemLog.set_log_id(row.get("log_id"))studentItemLog.set_student_item_id(row.get("student_item"))studentItemLog.set_fill_time(row.get("fill_time"))studentItemLog.set_content(row.get("content"))studentItemLogList.append(studentItemLog)return studentItemLogList
StudentItemEntity
class StudentItem:def __init__(self, student_item_id = None, student_id = None, item_id= None, content= None, score= None, fill_time= None, score_flag= None):self.__student_item_id = student_item_idself.__student_id = student_idself.__item_id = item_idself.__content = contentself.__score = scoreself.__fill_time = fill_timeself.__score_flag = score_flagdef get_student_item_id(self):return self.__student_item_iddef get_student_id(self):return self.__item_iddef get_item_id(self):return self.__item_iddef get_content(self):return self.__contentdef get_score(self):return self.__scoredef get_fill_time(self):return self.__fill_timedef get_score_flag(self):return self.__score_flagdef set_student_item_id(self,student_item_id):self.__student_item_id = student_item_iddef set_student_id(self,student_id):self.__item_id = student_iddef set_item_id(self,item_id):self.__item_id = item_iddef set_content(self,content):self.__content = contentdef set_score(self,score):self.__score = scoredef set_fill_time(self,fill_time):self.__fill_time = fill_timedef set_score_flag(self,score_flag):self.__score_flag = score_flag
StudentItemLogEntity
class StudentItemLog:def __init__(self, log_id= None, student_item_id= None, content= None, fill_time= None):self.__log_id = log_idself.__student_item_id = student_item_idself.__content = contentself.__fill_time = fill_timedef get_student_item_id(self):return self.__student_item_iddef set_student_item_id(self,student_item_id):self.__student_item_id = student_item_iddef set_log_id(self, log_id):self.__log_id = log_iddef get_log_id(self):return self.__log_iddef set_content(self, content):self.__content = contentdef get_fill_time(self):return self.__fill_timedef set_fill_time(self,fill_time):self.__fill_time = fill_timedef get_content(self):return self.__content
Main
from dao.StudentItemLogDao import StudentItemLogDao
from dao.StudentItemDao import StudentItemDaofor studentItem in StudentItemDao.listAllStudentItems():print(studentItem.get_content())for studentItemLog in StudentItemLogDao.listAllStudentItemLogs():print(studentItemLog.get_content())