数据库 | pymysql封装

"""
数据库操作
"""

from django.db import connection as conn


def update(sql, params=None):
    """
    增 删 改
    :param sql:
    :param params:
    :return:
    """

    with conn.cursor() as cursor:
        cursor.execute(sql, params=None)

        # 增加时返回lastrowid,删改时返回执行的行数
        return cursor.lastrowid if cursor.lastrowid else cursor.rowcount

def queryone(sql, params=None):
    """
    查询单条记录
    :param sql:
    :param params:
    :return:
    """
    with conn.cursor() as cursor:
        cursor.execute(sql, params)

        # 获取结果集
        data = cursor.fetchone()
        if data is None:
            return

        column = [columns[0] for columns in cursor.description]

        return dict(zip(column, data))


def querymany(sql, params=None):
    """
    查询多条记录
    :param sql:
    :param params:
    :return:
    """
    with conn.cursor() as cursor:
        cursor.execute(sql, params)

        # 获取结果集
        data = cursor.fetchone()

        if data is None:
            return []

        column = [columns[0] for columns in cursor.description]
        return [dict(zip(column, d)) for d in data]




### 使用 `pymysql` 封装数据库工具类 #### 1. 导入必要的模块并定义配置项 为了简化与 MySQL 数据库的交互,可以创建一个名为 `db_config.py` 的文件来存储数据库连接参数。 ```python # db_config.py DB_CONFIG = { 'host': 'localhost', 'port': 3306, 'user': 'root', 'password': '', 'database': 'test_db' } ``` #### 2. 创建数据库工具类 接下来,在另一个 Python 文件中实现主要的功能逻辑。这里展示了一个简单的 `DatabaseHelper` 类,它包含了基本的操作方法: ```python import pymysql from db_config import DB_CONFIG class DatabaseHelper(object): def __init__(self): self.connection = None try: self.connection = pymysql.connect( host=DB_CONFIG['host'], port=int(DB_CONFIG['port']), user=DB_CONFIG['user'], password=DB_CONFIG['password'], database=DB_CONFIG['database'] ) except Exception as e: print(f"Error connecting to the MySQL server: {e}") def execute_query(self, sql, params=None): """执行查询语句""" with self.connection.cursor() as cursor: cursor.execute(sql, params) result = cursor.fetchall() return result def execute_update(self, sql, params=None): """执行更新/插入语句""" affected_rows = 0 try: with self.connection.cursor() as cursor: affected_rows = cursor.execute(sql, params) self.connection.commit() except Exception as e: self.connection.rollback() raise e finally: return affected_rows def close_connection(self): """关闭数据库连接""" if self.connection is not None and self.connection.open: self.connection.close() if __name__ == '__main__': helper = DatabaseHelper() # 查询数据示例 query_sql = "SELECT * FROM users WHERE age >= %s" results = helper.execute_query(query_sql, (18,)) for row in results: print(row) # 插入数据示例 insert_sql = "INSERT INTO users(name, email) VALUES (%s,%s)" inserted_count = helper.execute_update(insert_sql, ('Alice', 'alice@example.com')) print(f"{inserted_count} record(s) were inserted.") helper.close_connection() ``` 上述代码展示了如何通过自定义的方法来进行 SQL 执行以及处理异常情况下的事务回滚[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值