首页 > 数据库 >pymysql 工具类

pymysql 工具类

时间:2024-11-18 16:43:01浏览次数:1  
标签:__ self pymysql cursor connection sql 工具 data

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
pip install pymsql
"""
import pymysql
import logging


class SQLException(BaseException):
    pass


class MySQLOperation(object):
    def __init__(self, host, username, password, database):
        self.host = host
        self.username = username
        self.password = password
        self.database = database
        self.connection = self.__connection()
        self.cursor = self.connection.cursor()

    def __connection(self):
        return pymysql.connect(host=self.host, user=self.username, password=self.password,
                               database=self.database, cursorclass=pymysql.cursors.DictCursor)

    def close(self):
        if self.connection:
            self.connection.close()

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

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

    def __insert(self, table, data: dict):
        cols = ", ".join('`{}`'.format(k) for k in data.keys())
        val_cols = ', '.join('%({})s'.format(k) for k in data.keys())
        sql = f"insert into {table}(%s) values(%s)"
        res_sql = sql % (cols, val_cols)
        # print(res_sql)  # 'insert into users(`name`, `age`) values(%(name)s, %(age)s)'
        self.cursor.execute(res_sql, data)

    def insert(self, table, data, commit: bool):
        if data is None or (isinstance(data, list) and len(data) == 0):
            raise SQLException("数据为空")
        try:
            if isinstance(data, dict):
                self.__insert(table, data)
            if isinstance(data, list):
                for elm in data:
                    self.__insert(table, elm)
            if commit:
                self.connection.commit()
        except Exception as e:
            logging.error("发生异常: %s", e, exc_info=True)  # 记录异常信息
            if commit:
                self.connection.rollback()
            else:
                raise SQLException("sql 插入异常")

    def update_delete(self, sql):
        try:
            self.cursor.execute(sql)
            self.connection.commit()
        except Exception as e:
            logging.error("发生异常: %s", e, exc_info=True)  # 记录异常信息
            self.connection.rollback()


if __name__ == '__main__':
    utils = MySQLOperation("192.168.148.172", "test", "test",
                           "test_db")
    # #
    # # limit_ = "SELECT * FROM sys_user LIMIT 1"
    # # print(utils.fetchall(sql=limit_))
    # #
    # # utils.close()
    # # data_1 = [{"name": 'happy224122', 'age': 12, "create_date": '2023-11-15 11:00:00'},
    # #           {"name": 'happy422', 'age': 13, "create_date": '2023-11-15 12:00:00'}]
    # #
    # # utils.insert("stu_test", data_1)
    # utils.update_delete("update stu_test set name ='happy1232' where age =13")
    # utils.close()

标签:__,self,pymysql,cursor,connection,sql,工具,data
From: https://www.cnblogs.com/lyuSky/p/18553016

相关文章

  • S3命令行工具:s3cmd与s5cmd的实用指南
    1.前言1.1.本文背景本文主要记录的是两个S3服务的命令行工具,也就是s3cmd和s5cmd;主要解决的需求就是使用这两个工具,自动同步S3服务上的文件到本地;具体场景如下:个人博客网站(blog.jiumoz.top)所有的图片都是存储在CloudflareR2上的,因为它有不少的免费额度,包括存......
  • 国内程序化交易和量化交易有哪些好用的框架与工具?
    炒股自动化:申请官方API接口,散户也可以python炒股自动化(0),申请券商API接口python炒股自动化(1),量化交易接口区别Python炒股自动化(2):获取股票实时数据和历史数据Python炒股自动化(3):分析取回的实时数据和历史数据Python炒股自动化(4):通过接口向交易所发送订单Python炒股自动化(5):......
  • WinRAR(解压缩工具)v6.23.0绿化版
    前言    很多同学在安装了WinRAR之后,每次用这个软件解压文件时,都会先跳出一个广告。这个广告就像打开了一个新窗口,很打扰人。从WinRAR的5.40版本开始,哪怕是简体中文版的,都会这样弹广告。不管你有没有注册账号,都会有这个广告跳出来功能特点1、压缩算法的改变:64位版本......
  • 自动化测试工具Ranorex Studio(三十五)-跟踪界面元素
    对于你要测试的应用程序,你可以通过RanorexSpy的元素树手动的引导或使用元素跟踪来识别界面元素。RanorexSpy有两种方法来跟踪界面元素:•   使用TRACK按钮•   即时跟踪使用跟踪按钮点击“TRACK”按钮开始跟踪界面元素。移动鼠标到一个特定的控件(例如:按钮或文本框)......
  • labview使用报表工具从数据库导出数据
    之前写了一篇labview从数据库导出数据到excel电子表格,但是是基于调用excel的activeX控件,有时候会有一些bug,就比如我工作机就无法显示方法,后面大哥指点才知道没有的原因是excel安装不完整。像我的工作机就没有这个选项。就需要选择类。这里看系统里面组件服务下的DCOM配置,看是......
  • PowerQuery 工具2
    PowerQuery工具2引用数据的两种常用方式方式1由外部链接创建数据透视表具体操作请参考PowerQuery工具1-一只小小小飞猪-博客园,这里需要注意,如果给的数据源不存在不规范的类型,请直接跳过修改过程,直接在首页——关闭并上载至优点:适用于原数据所在文件夹路径不变的情......
  • Electron框架使用vue开发跨平台桌面工具应用-后台日志发送到前台和执行导入ZIP
    一、后台日志发送到前台首先在preload.js里面注册回调因为需要主窗口给vue页面发送,需要把窗口管理起来,不能直接写在backgroud.js里面。需要暴露出来所以编写了windowManager.js//windowManager.jsletmainWindow=null;//设置mainWindowexportfunctionsetMainWind......
  • 打工人提效必备!4款好用的Win电脑效率工具
    今天来给大家分享4款我换了5台电脑都一定会安装的效率神器软件,每一款都能让你的办公、学习效率大幅提升!1、Everything这是一款文件搜索神器!相信大家都有过在电脑里找文件找得焦头烂额的经历吧?Everything就能完美解决这个问题。它的搜索速度超快,几乎是秒出结果。无论你的电......
  • gpmc.msc 是 Group Policy Management Console (组策略管理控制台) 的缩写,它是一个用
    gpmc.msc是GroupPolicyManagementConsole(组策略管理控制台)的缩写,它是一个用于管理和配置Windows操作系统中组策略的管理工具。该工具通过图形用户界面(GUI)提供了一个集中管理的方式,帮助IT管理员在网络环境中进行集中控制和管理用户、计算机的安全设置、应用程序配......
  • secedit 是 Windows 操作系统中的一个命令行工具,主要用于配置和管理系统的安全设置。
    secedit命令|MicrosoftLearnsecedit是Windows操作系统中的一个命令行工具,主要用于配置和管理系统的安全设置。这个工具可以用来应用安全模板、分析系统的安全配置、导出系统的安全配置设置等。它是Windows安全配置管理中的一个重要工具,通常被系统管理员用来管理本地安全......