首页 > 数据库 >Python 链接数据库,快速操作数据库类。让你操作数据库so so 的

Python 链接数据库,快速操作数据库类。让你操作数据库so so 的

时间:2023-04-11 14:01:00浏览次数:62  
标签:Python clause 数据库 value cursor so key where self


import pymysql


class DatabaseHandler:

    def __init__(self):
        self.db = pymysql.connect(host='127.0.0.1', user='root', db='test')
        # 创建游标对象
        self.cursor = self.db.cursor()

    # def __del__(self):
    #     self.close()

    def close(self):
        self.cursor.close()
        self.db.close()

    def delete_data(self, table_name: str, condition: dict) -> int:
        where_clause = " AND ".join(f"`{key}`='{value}'" for key, value in condition.items())
        sql = f"DELETE FROM `{table_name}` WHERE {where_clause};"
        affected_rows = self.cursor.execute(sql)
        self.db.commit()
        return affected_rows

    def select_data(self, table_name: str, columns: list = None, condition: dict = None, limit: int = None) -> list:
        if not columns:
            select_clause = "*"
        else:
            select_clause = ", ".join(f"`{column}`" for column in columns)

        where_clause = ""
        if condition:
            where_clause = " AND ".join(f"`{key}`='{value}'" for key, value in condition.items())
            where_clause = f"WHERE {where_clause}"

        limit_clause = ""
        if limit:
            limit_clause = f"LIMIT {limit}"

        sql = f"SELECT {select_clause} FROM `{table_name}` {where_clause} {limit_clause};"
        self.cursor.execute(sql)
        rows = self.cursor.fetchall()
        return rows

    def insert_data_by_array(self, info: dict, table_name: str) -> int:
        keys = ", ".join(f"`{key}`" for key in info.keys())
        values = ", ".join(f"'{value}'" for value in info.values())
        sql = f"INSERT INTO `{table_name}`({keys}) VALUES ({values});"
        self.cursor.execute(sql)
        self.db.commit()

        last_inserted_id = self.cursor.lastrowid
        return last_inserted_id

    def update_data(self, info: dict, table_name: str, condition: dict) -> int:
        set_clause = ", ".join(f"`{key}`='{value}'" for key, value in info.items())
        where_clause = " AND ".join(f"`{key}`='{value}'" for key, value in condition.items())

        sql = f"UPDATE `{table_name}` SET {set_clause} WHERE {where_clause};"
        affected_rows = self.cursor.execute(sql)
        self.db.commit()
        return affected_rows

标签:Python,clause,数据库,value,cursor,so,key,where,self
From: https://blog.51cto.com/u_14523369/6183210

相关文章

  • Python 如何相对于工程目录指定文件
    在Python中,可以使用相对路径来指定文件,相对路径是相对于当前工作目录的路径。如果要相对于工程目录指定文件,可以使用以下代码获取当前工作目录,并使用相对路径来指定文件:importos#获取当前工作目录current_dir=os.path.dirname(os.path.abspath(__file__))#使用相对路径......
  • Divisors UVA - 294
    求区间[L,R]的整数中哪一个的正约数最多。  一个数因数分解后,它的约数Cnt=(a[j]+1)的乘积,j是每个因数的个数 #include<iostream>#include<cstring>#include<cmath>#include<algorithm>usingnamespacestd;constintM=1e5+30;#defineintlonglo......
  • macOS Big Sur 11.7.6 (20G1231) Boot ISO 原版可引导镜像
    本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。2023年4月10日(北京时间11日凌晨),Apple为那些无法更新macOSVentura的旧Mac发布了macOSBig......
  • Oracle Database 23c Free - Developer Release(免费的 Oracle 数据库开发者版本)
    免费的Oracle数据库开发者版本请访问原文链接:https://sysin.org/blog/oracle-database-23c-free/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgOracleDatabase23cFree-DeveloperRelease是一个全新的、免费的、业界领先的Oracle数据库,全世界各个行业的企......
  • macOS Ventura 13.3.1 (22E261) Boot ISO 原版可引导镜像
    本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。macOSVentura13.3.1为Mac提供下列重要的错误修复和安全性更新(2023年4月7日):推手表情符号无法......
  • macOS Monterey 12.6.5 (21G531) Boot ISO 原版可引导镜像
    本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。2023年4月10日(北京时间11日凌晨),Apple为那些无法更新macOSVentura的旧Mac发布了macOSBig......
  • Python程序笔记20230303
    成绩评级程序分数<60,D60<=分数<80,C80<=分数<90,B90<=分数<100,A分数==100,S#输入分数score=int(input("请输入分数:"))#判断评级ifscore<0orscore>100:print("无效的分数")elifscore<60:print("......
  • 解决NewBing报错【Sorry, looks like your network settings are preventing access t
    开全局,使用浏览器插件ProxySwitchyOmega进行代理1、x2ray软件配置2、ProxySwitchyOmega配置将以下规则加入配置:*.msftconnecttest.com+proxy*.1drv+proxy*.microsoft+proxy*.aadrm.com+proxy*.acompli.com+proxy*.acompli.net+proxy*.aka.ms+proxy*.aka......
  • R语言-连接MySQL数据库方法
    #2R语言-连接MySQL数据库方法#####2.1方法1:使用R数据库接口连接数据库#####使用RMySQL包install.packages('RMySQL')library(RMySQL)#有两种方式操作#2.1.1使用dbConnect####conn<-dbConnect(MySQL(),dbname="smartbi_data",        ......
  • Python虚拟环境管理
    1、安装软件1.1、安装virtualenv、virtualenvwrapperpip3installvirtualenvpip3install--no-depsstevedorevirtualenvwrapper2、配置环境变量mkdir/data//venvecho'exportWORKON_HOME=/data/venv'>>.bashrcecho'exportVIRTUALENVWRAPPER_PYTHON=/......