一 ** 任务:数据库操作工具类 DBUtil DBHelper
完成学生管理系统 扩展* 制作 exe 可执行程序
扩展任务:真实的项目需求
功能描述:每天的人员点名和作业完成情况 整理为文档或者数据库
功能实现:
1.实现:实现每周每人点名未到的次数
2.实现: 实现每周每人作业未交的次数
3.实现:汇总每人总的作业未交的次数 和 总的 点名未到的次数
二 * * * 封装数据库操作的工具类 属性 方法
Ⅰ 定义函数 查询语句sql 参数元组params
增删改方法 python连接mysql数据库操作和参数不相同,其他代码都一致!
Ⅱ 制作一个工具类 XXXHelper XXXUtils 工具类
"""
面向对象编程制作工具类的思路
数据库工具类 * 作用使用面向对象的方式,
实现操作数据库代码的复用
创建类的思路***
1.定义类 定义类相关的属性 定义类相关的方法
mysql工具类 *
各种属性:host主机名 port端口号 user用户名 passwd密码 db数据库 charset字符编码 以及当前类的属性
各种方法:获取连接 获得游标对表进行增删改的操作方法 关闭资源的方法 获取一条或者所有数据
当前对象中的属性行为 通过类实例化对象导出来的方法
1.当前对象的属性一一列举
2.当前对象中的行为方法函数
"""
import pymysql
class MysqlHelper():
#初始化对象
def __init__(self,host,port,user,passwd,db,charset="utf8"):
self.host=host
self.port=port
self.user=user
self.passwd=passwd
self.db=db
self.charset=charset
#self.conn=None
def getconnect(self):
#建立连接 属性参数形参传进去即可 self.conn=pymysql.connect(host=self.host,port=self.port,user=self.user,passwd=self.passwd,db=self.db,charset=self.charset)
#获得游标和指针
self.cur=self.conn.cursor()
#关闭资源
def close(self):
self.cur.close()
self.conn.close()
#增删改的功能对表格进行操作返回影响的行数
def myexecute(self,sql,params):
"""
增删改通用的功能(sql语句,参数列表)
:return:
"""
num=0
#连接数据库
self.getconnect()
#获得游标来进行增删改的操作返回影响的行数
num=self.cur.execute(sql,params)
self.conn.commit()
self.close()
return num
def getone(self,sql,params=()):
"""
工具类获取一条数据
:paramsql: sql语句
:paramparams: 参数的列表
:return:返回的是影响的行数
"""
result=None
self.getconnect()#打开数据库连接
self.cur.execute(sql,params)
result=self.cur.fetchone()
self.close()
return result
测试类:
"""
增加测试
1.准备sql查询语句
2.准备参数
3.创建数据库连接也会有建立游标
4.调用增删改的方法对数据库进行操作
"""
from MySQLHelperimport *
def demo01():
sql="insert into student values(default,%s,%s,%s,%s,%s,%s)"
#通过%s进行占位之后需要输入参数姓名性别年龄生日地址班级
params=["yy","女",25,"2000-02-20","山西",2]
#通过类创建实例化MySQLHelper对象连接数据库 加入实参
#将数据库的对象创建出来就有获取链接的功能和游标和指针
db=MysqlHelper("39.98.39.173",13306,"root","root","杨成森")
#对表格进行操作 建立游标和指针用实例化对象.出方法
num=db.myexecute(sql,params)
if num>0:
print("增加成功")
else:
print("增加失败")
def demo02():
sql="select * from student where name = %s and id = %s"
params=("way",7)
db=MysqlHelper("39.98.39.173",13306,"root","root","杨成森")
result=db.getone(sql,params)
print(result)
if __name__ =='__main__':
demo02()