经典的笔试题python操作数据库和python设计模式【多测师_王sir】_封装

 

 

#coding=utf-8
"""
===========================
Author:多测师_王sir
Time:2020-12-11 12:00
===========================
"""

#第一题 单例设计模式代码如下:
class MyClass(object):
__obj = None
@classmethod
def __new__(cls, *args, **kwargs):
if not cls.__obj:
#如果没有创建对象、就调用父类的new方法创建一个
cls.__obj = super().__new__(cls)
return cls.__obj
else:
#如果创建了、则把第一次的对象返回
return cls.__obj

#实例化==》创建对象
m1 = MyClass()
m2 = MyClass()
m3 = MyClass()
print(id(m1))
print(id(m2))
print(id(m3))

#运行结果:内存地址都是一样的、说明根据MyClass类创建的对象都是同一个对象。

#第二题
import pymysql
class Db_Utils:

def __init__(self):
'''把连接数据库的参数设置为实例变量'''
self.host = '192.168.112.129'
self.user='root'
self.password='123456'
self.database='dcs8'
self.port=3306

def get_connection(self):
'''封装一个创建数据库连接的对象'''
db = pymysql.connect(self.host,self.user,self.password,self.database,self.port)
return db

def find_one(self,sql):
'''封装一个查询表中1条数据的工具方法'''
db = self.get_connection() #对象调用实例方法
cursor = db.cursor() #创建一个游标对象
cursor.execute(sql)
one = cursor.fetchone() #提取表中的第一条数据
return one

def delete_one(self,del_sql,select_sql):
'''封装一个删除表中指定某一条数据并且查询结果的工具方法'''
db = self.get_connection() #或者数据库的连接对象
cursor = db.cursor()
cursor.execute(del_sql) #执行删除SQL语句
cursor.execute(select_sql) #执行查询SQL语句
db.commit() #如果出现执行了删除却没有删除成功则执行commit方法、commit会把删除和查询事务进行提交
all = cursor.fetchall()
return all


if __name__ == '__main__':
m = Db_Utils() #创建一个对象
# print(m.find_one('select * from test;'))
print(m.delete_one('delete from test where id = 4;','select * from test;'))