pymysql的增删改查工具类

本文介绍了一个使用Python的PyMySQL库进行数据库操作的实用类,包括连接数据库、执行查询、插入、更新、删除等核心功能。
# encoding = utf8
import pymysql
class PymysqlUtil():
    #初始化方法
    def __init__(self,host,port,user,passwd,dbName,charsets):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.dbName = dbName
        self.charsets = charsets
    #链接数据库
    def getCon(self):
        self.db = pymysql.Connect(
            host=self.host,
            port=self.port,
            user=self.user,
            passwd=self.passwd,
            db=self.dbName,
            charset=self.charsets
        )
        self.cursor = self.db.cursor()
    #关闭链接
    def close(self):
        self.cursor.close()
        self.db.close()
    #查询单行记录
    def get_one(self,sql):
        res = None
        try:
            self.getCon()
            self.cursor.execute(sql)
            res = self.cursor.fetchone()
        except:
            print("查询失败!")
        return res
    #查询列表数据
    def get_all(self,sql):
        res = None
        try:
            self.getCon()
            self.cursor.execute(sql)
            res = self.cursor.fetchall()
            self.close()
        except:
            print("查询失败!")
        return res
    #插入数据
    def __insert(self,sql):
        count = 0
        try:
            self.getCon()
            count = self.cursor.execute(sql)
            self.db.commit()
            self.close()
        except:
            print("操作失败!")
            self.db.rollback()
        return count
    #修改数据
    def __edit(self,sql):
        return self.__insert(sql)
    #删除数据
    def __delete(self,sql):
        return self.__insert(sql)
    #更新数据
    def __update(self,sql):
        return self.__insert(sql)

### 使用 PyMySQL 实现数据库的增删改查操作 以下是通过 Python 中的 PyMySQL 库实现 MySQL 数据库的增删改查操作的具体方法。 #### 1. 安装 PyMySQL 在使用 PyMySQL 之前,需要先安装它。可以通过以下命令完成安装: ```bash pip install PyMySQL ``` 或者如果网络环境受限,可以尝试国内镜像源: ```bash pip install PyMySQL -i https://pypi.douban.com/simple/ ``` --- #### 2. 创建数据库连接类 为了方便管理数据库连接和执行 SQL 操作,通常会创建一个工具类来封装这些功能: ```python import pymysql class DatabaseManager: def __init__(self, host='localhost', user='root', password='', database=''): """ 初始化数据库连接参数 :param host: 主机地址,默认为 localhost :param user: 用户名,默认为 root :param password: 密码 :param database: 要连接的数据库名称 """ self.connection = None try: self.connection = pymysql.connect( host=host, user=user, password=password, database=database, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) self.cursor = self.connection.cursor() except Exception as e: print(f"Error connecting to the database: {e}") def close(self): """关闭数据库连接""" if self.connection: self.connection.close() def insert_one(self, table_name, data_dict): """ 插入单条数据到指定表 :param table_name: 表名 :param data_dict: 键值对形式的数据字典 """ keys = ', '.join(data_dict.keys()) values = ', '.join(['%s'] * len(data_dict)) sql = f"INSERT INTO `{table_name}` ({keys}) VALUES ({values})" try: self.cursor.execute(sql, tuple(data_dict.values())) self.connection.commit() return True except Exception as e: print(f"Insert error: {e}") self.connection.rollback() return False def update_one(self, table_name, set_data, where_condition): """ 更新一条或多条记录 :param table_name: 表名 :param set_data: 设置更新的内容 (键值对) :param where_condition: 条件字符串 """ set_clause = ", ".join([f"`{key}`=%s" for key in set_data]) sql = f"UPDATE `{table_name}` SET {set_clause} WHERE {where_condition}" try: self.cursor.execute(sql, list(set_data.values())) self.connection.commit() return True except Exception as e: print(f"Update error: {e}") self.connection.rollback() return False def delete_one(self, table_name, where_condition): """ 删除符合条件的记录 :param table_name: 表名 :param where_condition: 条件字符串 """ sql = f"DELETE FROM `{table_name}` WHERE {where_condition}" try: result = self.cursor.execute(sql) self.connection.commit() return result > 0 except Exception as e: print(f"Delete error: {e}") self.connection.rollback() return False def query_all(self, table_name, columns="*", where_condition=None): """ 查询所有满足条件的结果 :param table_name: 表名 :param columns: 需要查询的列,默认为 * :param where_condition: 可选的过滤条件 """ conditions = f"WHERE {where_condition}" if where_condition else "" sql = f"SELECT {columns} FROM `{table_name}` {conditions};" try: self.cursor.execute(sql) results = self.cursor.fetchall() return results except Exception as e: print(f"Query error: {e}") return [] ``` --- #### 3. 示例代码 ##### (1)插入数据 向 `students` 表中插入一条新记录: ```python db_manager = DatabaseManager(host='localhost', user='root', password='password', database='test_db') data_to_insert = {'name': 'Alice', 'age': 25} result = db_manager.insert_one('students', data_to_insert) if result: print("Data inserted successfully.") else: print("Failed to insert data.") db_manager.close() ``` ##### (2)更新数据 更新 `students` 表中某条记录的信息: ```python update_data = {'age': 26} condition = "name='Alice'" result = db_manager.update_one('students', update_data, condition) if result: print("Data updated successfully.") else: print("Failed to update data.") ``` ##### (3)删除数据 删除 `students` 表中符合条件的记录: ```python condition = "name='Bob'" result = db_manager.delete_one('students', condition) if result: print("Data deleted successfully.") else: print("Failed to delete data or no matching record found.") ``` ##### (4)查询数据 从 `students` 表中获取所有记录: ```python results = db_manager.query_all('students', '*', "age >= 20") for row in results: print(row) ``` --- ### 注意事项 - **SQL 注入防护**:始终使用占位符 `%s` 或者列表传递参数的方式构建动态 SQL,而不是直接拼接字符串[^4]。 - **事务处理**:对于涉及多个操作的任务(如批量插入),建议显式开启事务并手动提交或回滚。 - **异常捕获**:每次执行 SQL 操作时都应考虑可能发生的错误,并妥善处理异常情况。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ansap

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值