python之数据库连接

概述

          前几日,闲来无事,写了一个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())

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python同步应用:多个线程有序执行

可以使用互斥锁完成多个任务,有序的进程工作,这就是线程的同步 from threading import Thread, Lock import time mutex1 Lock() # 创建一个互斥锁 mutex2 Lock() # 创建一个互斥锁 mutex3 Lock() # 创建一个互斥锁 def fun1(): while 1: mutex1…

阿里云 超级码力在线编程大赛初赛 第2场 题目4. 小栖的金字塔(超级卡特兰数+除法求模/乘法逆元)

文章目录1. 题目2. 解题1. 题目 来源:https://tianchi.aliyun.com/oj/15165469968503404/76745683739284070 2. 解题 按道理可以DP暴力求解,但是数据规模太大,会超时的 手算前几项,然后去 oesi 网站查询数列,找到 大…

统计学习之箱线图

箱线图: 箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还…

SQL SERVER 中 实现主表1行记录,子表多行记录 整合成一条虚拟列

表中有这样的记录,简单的主子表,现要想通过left join 语句把两表关联起来 select * from tbl_diary_reback a left join tbl_diary_reback_files s on a.id s.diaryrebackid where diaryid -7e0f6876:1400eb06d1f:-7fed and diaryrebackid 1a75114…

python中的生产者与消费者模式

Queue的说明 对于Queue,在多线程通信之间扮演重要的角色 添加数据到队列中,使用put()方法 从队列中取数据,使用get()方法 判断队列中是否还有数据,使用qsize()方法 生产者消费者模式的说明 为什么要使用生产者和消费者模式 在线程…

01.神经网络和深度学习 W4.深层神经网络

文章目录1. 深层神经网络2. 前向传播和反向传播3. 核对矩阵维数4. 参数、超参数参考: 吴恩达视频课 深度学习笔记 1. 深层神经网络 有的时候只有非常深的神经网络才能发挥作用。 但是无法提前预知多少层的神经网络合适,可以先尝试逻辑回归,…

R语言第六讲 数据的统计分析

基本命令练习 下面的代码涵盖了一些分析数据常用的一些R语言的命令&#xff1a; #基本向量、矩阵的一般操作 x <- c(1,3,2,5) x x c(1,6,2) x y c(1,4,3) length(x) length(y) xy ls() rm(x,y) ls() rm(listls()) ?matrix xmatrix(datac(1,2,3,4), nrow2, ncol2) x xmat…

linux中的网络体系结构

1. 网络层级模型 计算机在进行网络通讯的时候&#xff0c;也要经过上图所示的类比流程。我们在实现通讯的时候&#xff0c;为了让整个流程的各个环节各司其职&#xff0c;将其按照各自所做的工作类别划分为不同的层级&#xff0c;彼此协作完成整个工作。 2. TCP/IP参考模型 TCP…

struts2异常处理

java1234官网 在sstruts2里面配置自己的异常处理 1 <exception-mapping result"error" exception"java.sql.SQLException"/> 2 <result name"error">/error.jsp</result> 在service里面捕捉到异常后往外抛&#x…

LeetCode 486. 预测赢家(博弈DP)

文章目录1. 题目2. 解题1. 题目 给定一个表示分数的非负整数数组。 玩家 1 从数组任意一端拿取一个分数&#xff0c;随后玩家 2 继续从剩余数组任意一端拿取分数&#xff0c;然后玩家 1 拿&#xff0c;…… 。 每次一个玩家只能拿取一个分数&#xff0c;分数被拿取之后不再可取…

linux中的ip地址、子网掩码、端口

ip地址&#xff1a;用来在网络中标记一台电脑的一串数字&#xff0c;比如192.168.1.1&#xff1b;在本地局域网上是惟一的。 每一个IP地址包括两部分&#xff1a;网络地址和主机地址 子网掩码只有一个作用&#xff0c;就是将某个IP地址划分成网络地址和主机地址两部分子网掩码的…

R语言第七讲 线性回归分析案例

题目 MASS 库中包含 Boston (波士顿房价)数据集&#xff0c;它记录了波士顿周围 506 个街区的 medv (房价中位数)。我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数)&#xff0c; age (平均房 龄)&#xff0c; lstat (社会经济地位低的家庭所占比例)等来预测 medv (房价…

01.神经网络和深度学习 W4.深层神经网络(作业:建立你的深度神经网络+图片猫预测)

文章目录作业1. 建立你的深度神经网络1. 导入包2. 算法主要流程3. 初始化3.1 两层神经网络3.2 多层神经网络4. 前向传播4.1 线性模块4.2 线性激活模块4.3 多层模型5. 损失函数6. 反向传播6.1 线性模块6.2 线性激活模块6.3 多层模型6.4 梯度下降、更新参数作业2. 深度神经网络应…

浅析调用android的content provider(一)

在Android下&#xff0c;查询联系人、通话记录等&#xff0c;需要用到content provider。但是&#xff0c;调用content provider时&#xff0c;Android框架内部是如何做的呢&#xff1f;这一系列文章就是解决这个问题的&#xff0c;所采用的开发环境及源码都是基于Android 1.6版…

linux中的集线器、交换机、路由器及组网

集线器&#xff1a;&#xff08;缺点&#xff1a;群发信息 hub&#xff08;集线器&#xff09;能够完成多个电脑的链接每个数据包的发送都是以广播的形式进行的&#xff0c;容易堵塞网络 通过交换机组网 网络交换机&#xff08;又称“网络交换器”&#xff09;&#xff0c;是…

R语言第七讲 线性回归分析案例续

题目 MASS 库中包含 Boston (波士顿房价)数据集&#xff0c;它记录了波士顿周围 506 个街区的 medv (房价中位数)。我们将设法用 13 个预测变量如 rm (每栋住宅的平均房间数)&#xff0c; age (平均房 龄)&#xff0c; lstat (社会经济地位低的家庭所占比例)等来预测…

LeetCode 1129. 颜色交替的最短路径(BFS)

文章目录1. 题目2. 解题1. 题目 在一个有向图中&#xff0c;节点分别标记为 0, 1, ..., n-1。 这个图中的每条边不是红色就是蓝色&#xff0c;且存在自环或平行边。 red_edges 中的每一个 [i, j] 对表示从节点 i 到节点 j 的红色有向边。 类似地&#xff0c;blue_edges 中的每…

web.config文件之自定义错误节

web.config文件之自定义错误节 大家都知道&#xff0c;在开发asp.net应用程序时&#xff0c;通过web.config文件可以配置在执行 Web 请求期间发生未处理的错误时&#xff0c;ASP.NET 显示信息的方式。下面是一个典型的基本配置&#xff1a; ?<system.web><customErro…

R语言第八讲 评估模型之交叉验证法分析案例

题目 评估Auto数据集上拟合多个线性模型所产生的测试错误率。Auto数据集是存在与ISLR程序包中的一个摩托车相关数据的数据集&#xff0c;读者可自行下载ISLR程序包&#xff0c;并将Auto数据集加载。 相关资料 交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验…

linux中UDP程序流程、客户端、服务端

UDP--- 用户数据报协议&#xff08;User Datagram Protocol&#xff09;&#xff0c;是一个无连接的简单的面向数据报的运输层协议。 优点&#xff1a;传输速度快 缺点&#xff1a;不可靠 socket的中文意思是接插件&#xff1a; 创建socket 在 Python 中 使用socket 模块的类 …