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

 

 

#coding=utf-8
"""
===========================
Author:多测师_王sir
Time:2020-12-11 12:00
Wechat:xiaoshubass
website:www.duoceshi.cn
===========================
"""

#第一题  单例设计模式代码如下:
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;'))

 

posted @ 2020-12-11 17:47  多测师_树哥  阅读(270)  评论(0编辑  收藏  举报