zoukankan      html  css  js  c++  java
  • 面向对象实战 数据库面向过程代码封装成面向对象代码

    import pymysql,xlwt
    import traceback,hashlib
    MYSQL_INFO = {
    'host':'xx.xx.x.xx',
    'user':'jxz',
    'password':'123456',
    'db':'jxz',
    'charset':'utf8',
    'autocommit':True
    }

    def execute_sql(sql):
    conn = pymysql.connect(**MYSQL_INFO) #xx=xxx,xx=xx,
    cur = conn.cursor(pymysql.cursors.DictCursor)
    try:
    cur.execute(sql)
    except:
    print('sql不正确')
    traceback.print_exc()#具体定位到报错的信息
    else:
    return cur.fetchall() #None []
    finally:
    conn.close()
    cur.close()

    def write_excel(name,data):
    book = xlwt.Workbook()
    sheet = book.add_sheet('sheet1')
    for index, key in enumerate(data[0]): # 写表头
    sheet.write(0, index, key)
    for row, item in enumerate(data, 1): # 写数据
    for col, value in enumerate(item.values()):
    sheet.write(row, col, value)

    book.save(name + '.xls')


    def my_md5(s):#md5加密
    s = str(s)
    s = s.encode()
    m = hashlib.md5(s) # bytes,不可逆
    result = m.hexdigest()
    return result


    封装成面向对象的代码
    import pymysql  #把数据库写成面向对象
    MYSQL_INFO = {
    'host':'xxx.xx.x.xx',
    'user':'jxz',
    'password':'123456',
    'db':'jxz',
    'charset':'utf8',
    'autocommit':True#commit 自动提交
    }
    class Mysql():
    def __init__(self,host,user,password,db,autocommit=True,charset='utf8'):
    self.coon=pymysql.connect(host=host,user=user,password=password,db=db,charset=charset,autocommit=autocommit)
    self.cursor=self.coon.cursor()
    def fetchall(self,sql):
    self.cursor.execute(sql)#执行sql
    return self.cursor.fetchall()
    def fetone(self,sql):
    self.cursor.execute(sql) # 执行sql
    return self.cursor.fetchone()
    def close(self):
    self.coon.close()
    if __name__=='__main__':
    ces=Mysql(**MYSQL_INFO)
    ces.fetchall('select * from app_myuser;')
    加一些异常的代码

    import pymysql
    from loguru import logger
    import traceback

    MYSQL_INFO = {
    'host':'xxx.xxx.3.40',
    'user':'jxz',
    'password':'123456',
    'db':'jxz',
    'charset':'utf8',
    'autocommit':True
    }
    class MySQL:
    def __init__(self,host,user,password,db,charset='utf8',autocommit=True):
    self.conn = pymysql.connect(user=user,host=host,password=password,db=db,charset=charset,autocommit=autocommit)
    self.cursor = self.conn.cursor()


    def __del__(self):
    self.__close()

    def execute(self,sql):
    try:#加一些异常的代码
    self.cursor.execute(sql)
    except Exception:
    logger.error('sql执行出错,sql语句是{}',sql)
    logger.error(traceback.format_exc())

    def fetchall(self,sql):
    self.execute(sql)
    return self.cursor.fetchall()

    def fetchone(self,sql):
    self.execute(sql)
    return self.cursor.fetchone()

    def bak_db(self):
    pass

    def __close(self):
    self.cursor.close()
    self.conn.close()

    if __name__ == '__main__':
    my = MySQL(**MYSQL_INFO)
    print(my.fetchall('select * from app_myuser;'))
    my.fetchone('select * from app_myuser where id=1;')
    my.fetchone('select * from app_myuser where id=1;')
    my.fetchone('select * from app_myuser where id=1;')

    使用面向对象写出来的效果更加清晰了,以后用MySQ操作就可以了,比如备份数据库

  • 相关阅读:
    BZOJ 3527: [Zjoi2014]力 [快速傅里叶变换]
    BZOJ 2194 [快速傅里叶变换 卷积]
    BZOJ 2179 [快速傅里叶变换 高精度乘法]
    [快速傅立叶变换&快速傅里叶变换]【旧 手写笔记】
    CF 235C. Cyclical Quest [后缀自动机]
    BZOJ 1396&&2865 识别子串[后缀自动机 线段树]
    BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster [广义后缀自动机]
    BZOJ 3926: [Zjoi2015]诸神眷顾的幻想乡 [广义后缀自动机 Trie]
    BZOJ 2806: [Ctsc2012]Cheat [广义后缀自动机 单调队列优化DP 二分]
    BZOJ 3473: 字符串 [广义后缀自动机]
  • 原文地址:https://www.cnblogs.com/weilemeizi/p/13895646.html
Copyright © 2011-2022 走看看