python3自写小工具

封装pymysql,方便快速调用(python3)

2020-09-14  本文已影响0人  AmanWang

介绍

这是通过对pymysql进行的二次简单封装,封装后可以很方便地调用以对mysql数据库进行操作。
引用方式:在要使用数据库的地方import该对象,然后通过AmanMySQL(mysql["host"], mysql["user"], mysql["passwd"], mysql["dbName"])连接数据库赋值给某一变量,之后就可以通过对应变量对select、update、insert、delete等对数据库做操作。源码和示例如下:

源码

#encoding: utf-8

import pymysql

class AmanMySQL():
    # 初始化
    def __init__(self, host, user, passwd, dbName):
        self.host = host
        self.user = user
        self.passwd = passwd
        self.dbName = dbName
    
    # 连接数据库,需要传数据库地址、用户名、密码、数据库名称,默认设置了编码信息
    def connet(self):
        try:
            self.db = pymysql.connect(self.host, self.user, self.passwd, self.dbName, use_unicode=True, charset='utf8')
            self.cursor = self.db.cursor()
        except Exception as e:
            return e
    
     # 关闭数据库连接 
    def close(self):
        try:
            self.cursor.close()
            self.db.close()
        except Exception as e:
            return e

     # 查询操作,查询单条数据
    def get_one(self, sql):
        # res = None
        try:
            self.connet()
            self.cursor.execute(sql)
            res = self.cursor.fetchone()
            self.close()
        except Exception:
            res = None
        return res

     # 查询操作,查询多条数据
    def get_all(self, sql):
        # res = ()
        try:
            self.connet()
            self.cursor.execute(sql)
            res = self.cursor.fetchall()
            self.close()
        except Exception:
            res = ()
        return res
   
     # 查询数据库对象
    def get_all_obj(self, sql, tableName, *args):
        resList = []
        fieldsList = []
        try:
            if (len(args) > 0):
                for item in args:
                    fieldsList.append(item)
            else:
                fieldsSql = "select COLUMN_NAME from information_schema.COLUMNS where table_name = '%s' and table_schema = '%s'" % (
                    tableName, self.dbName)
                fields = self.get_all(fieldsSql)
                for item in fields:
                    fieldsList.append(item[0])

            # 执行查询数据sql
            res = self.get_all(sql)
            for item in res:
                obj = {}
                count = 0
                for x in item:
                    obj[fieldsList[count]] = x
                    count += 1
                resList.append(obj)
            return resList
        except Exception as e:
            return e

     # 数据库插入、更新、删除操作
    def insert(self, sql):
        return self.__edit(sql)
    def update(self, sql):
        return self.__edit(sql)
    def delete(self, sql):
        return self.__edit(sql)
    def __edit(self, sql):
        # count = 0
        try:
            self.connet()
            count = self.cursor.execute(sql)
            self.db.commit()
            self.close()
        except Exception as e:
            self.db.rollback()
            count = 0
        return count

调用示例

# 调用
if __name__ == '__main__':
    # 使用
    mysql = {
        "host": "127.0.0.1",
        "port": "3306",
        "user": "test",
        "passwd": "123456",
        "dbName": "testMysql",
    }
    useDB = AmanMySQL(mysql["host"], mysql["user"], mysql["passwd"], mysql["dbName"])

    # 查询
    print('************************************select查询*********************************')
    sql = "select case_name from case_manage"   # 不带条件sql
    sqlWithCondition = "select case_name from case_manage where create_at > '2020-08-20 11:18:47'"   # 带条件sql
    getOne = useDB.get_one(sql)
    getAll = useDB.get_all(sql)
    getAllWithCondition = useDB.get_all(sqlWithCondition)
    print('len(getOne)=%d' %(len(getOne), ))
    print('getOne=%s' %(getOne, ))
    print('len(getAll)=%d' % (len(getAll),))
    print('getAll=%s' %(getAll, ))
    print('len(getAllWithCondition)=%d' % (len(getAllWithCondition),))
    print('getAllWithCondition=%s' % (getAllWithCondition,))
    print()

    # 更新
    print('************************************update更新*********************************')
    select_sql_1 = "select case_name from case_manage where case_id=2"
    update_sql = "update case_manage set case_name = '测试测试-06' where case_id=2"
    select_res_1 = useDB.get_one(select_sql_1)
    update_res = useDB.update(update_sql)
    select_res_2 = useDB.get_one(select_sql_1)
    print('数据更新前:%s' %(select_res_1,))
    print('数据更新结果:%s' %(update_res,))
    print('数据更新后:%s' % (select_res_2,))
    print()

    # 删除
    print('************************************delete删除*********************************')
    select_sql_2 = "select count(1) from case_group"
    insert_sql = "delete from case_group where group_name = '测试插入数据'"
    select_res_3 = useDB.get_one(select_sql_2)
    delete_res = useDB.insert(insert_sql)
    select_res_4 = useDB.get_one(select_sql_2)
    print('数据删除前行数:%s' % (select_res_3,))
    print('数据删除结果:%s' % (delete_res,))
    print('数据删除后行数:%s' % (select_res_4,))
    print()

    # 插入
    print('************************************insert插入*********************************')
    select_sql_3 = "select count(1) from case_group"
    insert_sql = "insert  into case_group(group_name,group_code,ext,create_by,update_by,create_at,update_at,status,isDel) values ('测试插入数据','hello','0','管理员','乾隆大帝','2020-06-15 10:37:56','2020-06-16 15:43:03',1,0)"
    select_res_5 = useDB.get_one(select_sql_3)
    insert_res = useDB.insert(insert_sql)
    select_res_6 = useDB.get_one(select_sql_3)
    print('数据插入前行数:%s' % (select_res_5,))
    print('数据插入结果:%s' % (insert_res,))
    print('数据插入后行数:%s' % (select_res_6,))
    print()


# 结果
************************************select查询*********************************
len(getOne)=1
getOne=('123',)
len(getAll)=53
getAll=(('123',), ('23',), ('aaaa',), ('dfgs规范的的',), ('sdfsdf奋斗奋斗',), ('修改购物车商品数量',), ('加购物车',), ('取消选中购物车商品',), ('商品搜索-价格由低到高排序',), ('商品搜索-价格由高到低排序',), ('商品搜索-第二页排序',), ('商品搜索-筛选排序',), ('商品搜索-综合排序',), ('商品搜索-销量排序',), ('商品详情-单参数',), ('商品详情页-多参数',), ('商品详情页获取推荐商品',), ('孕期-首页-胎宝宝变化',), ('我就是我',), ('我就是我44',), ('搜索-妙招01',), ('搜索页面html',), ('撒旦发射',), ('检查可售区域',), ('欧电首页',), ('测试00121',), ('测试测试-03',), ('测试补订单',), ('消息中心-关注我的',), ('消息中心-系统消息',), ('消息中心-系统消息23',), ('登录-测试环境',), ('获取优惠券',), ('获取分享信息',), ('获取分销员信息',), ('获取历史搜索记录',), ('获取商品media',), ('获取商品价格和库存',), ('获取商品售后信息',), ('获取商品基础信息',), ('获取商品属性',), ('获取商品销量',), ('获取商家信息',), ('获取商家商品描述',), ('获取搜索热词',), ('获取用户信息',), ('获取用户收货地址',), ('获取电商弹窗数据',), ('获取购物车商品list',), ('购物车商品计数',), ('选中购物车商品',), ('首页-index',), ('首页33消息中心',))
len(getAllWithCondition)=8
getAllWithCondition=(('商品搜索-第二页排序',), ('获取购物车商品list',), ('购物车商品计数',), ('修改购物车商品数量',), ('取消选中购物车商品',), ('选中购物车商品',), ('登录-测试环境',), ('消息中心-系统消息23',))

************************************update更新*********************************
数据更新前:('测试测试-03',)
数据更新结果:1
数据更新后:('测试测试-06',)

************************************delete删除*********************************
数据删除前行数:(16,)
数据删除结果:1
数据删除后行数:(15,)

************************************insert插入*********************************
数据插入前行数:(15,)
数据插入结果:1
数据插入后行数:(16,)
上一篇 下一篇

猜你喜欢

热点阅读