当前位置: 首页 > article >正文

python使用pymysql

为了封装这个数据库操作为一个通用方法,我们可以创建一个函数,该函数接受数据库连接参数(如主机名、用户名、密码、数据库名)、SQL语句以及必要的参数(用于参数化查询)。下面是一个简单的封装示例:

import pymysql

def execute_query(host, user, password, db, query, params=None, charset='utf8mb4'):
    """
    执行SQL查询并返回结果。

    :param host: 数据库主机名
    :param user: 数据库用户名
    :param password: 数据库密码
    :param db: 数据库名
    :param query: SQL查询语句
    :param params: 用于参数化查询的参数元组,默认为None
    :param charset: 字符集,默认为'utf8mb4'
    :return: 查询结果
    """
    try:
        # 建立数据库连接
        connection = pymysql.connect(host=host, user=user, password=password, db=db, charset=charset)
        
        with connection.cursor() as cursor:
            # 执行SQL语句
            cursor.execute(query, params)
            
            # 获取查询结果
            result = cursor.fetchall()
            
            # 返回查询结果
            return result
    
    except pymysql.MySQLError as e:
        print(f"数据库错误: {e}")
        return None
    
    finally:
        # 关闭数据库连接
        if connection:
            connection.close()

# 使用示例
if __name__ == "__main__":
    host = 'localhost'
    user = 'user'
    password = 'passwd'
    db = 'db'
    query = "SELECT `id`, `name` FROM `users` WHERE `age` > %s"
    params = (18,)
    
    result = execute_query(host, user, password, db, query, params)
    if result:
        for row in result:
            print(row)
    else:
        print("没有查询到结果")

这个函数execute_query接受必要的数据库连接信息和SQL查询语句,以及可选的参数元组用于参数化查询。它执行查询并返回结果。如果发生数据库错误(如连接问题或SQL语句错误),它会打印错误消息并返回None。最后,它确保数据库连接在使用后被正确关闭。

请注意,在实际应用中,您可能还需要处理其他类型的异常,比如网络问题导致的连接中断等。此外,对于需要提交更改的SQL语句(如INSERT、UPDATE、DELETE),您可能需要在with块内调用connection.commit()来提交更改。但在这个例子中,我们只处理查询操作,因此不需要提交更改。


http://www.kler.cn/a/374655.html

相关文章:

  • 高并发-负载均衡
  • MySQL 9从入门到性能优化-系统信息函数
  • 【Python】动态与静态的较量:深入探讨Python的动态类型机制与类型提示的应用
  • Video Posts
  • EDA --软件开发之路
  • VMware capacity mismatch for disk错误解决办法:kb-vuln-1靶机
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.13——深入理解指针(3)
  • Glide 简易教程
  • 【Rust标准库中的convert(AsRef,From,Into,TryFrom,TryInto)】
  • PyQt5信号与槽一
  • 【抽代复习笔记】34-群(二十八):不变子群的几道例题
  • .net core中间件Polly
  • 【WPF】如何获取屏幕比例
  • BFH的原理及用法
  • 【VS中Git同步提交 报错:访问.vs/FileContentIndex/xxx.vsidx权限不允许】
  • DAO模式及单例模式
  • 查询引擎的演变之旅 | OceanBase原理解读
  • 2024 Rust现代实用教程 Borrowing借用 Lifetime生命周期
  • python将mongodb中的数据写入到postgresql中
  • 华为实时视频使用FLV播放RTSP流
  • ssm药店管理系统-计算机毕业设计源码81276
  • 【数据结构与算法】第7课—数据结构之队列
  • 超子物联网HAL库笔记:准备篇
  • Hive的数据存储格式
  • 设计模式 策略模式 场景Vue (技术提升)
  • WebMvcConfigurer