招商建设工程有限公司网站,wordpress美化下载页面,wordpress必应,网站开发业务怎么做pymysql的上下文管理器#xff1a;简化数据库操作
当我们使用 pymysql 操作数据库时#xff0c;管理数据库连接和游标的生命周期是一项重要的任务。Python 的上下文管理器提供了一种优雅的方式来处理资源的获取和释放。在本文中#xff0c;我们将探索如何创建一个简单的 py…pymysql的上下文管理器简化数据库操作
当我们使用 pymysql 操作数据库时管理数据库连接和游标的生命周期是一项重要的任务。Python 的上下文管理器提供了一种优雅的方式来处理资源的获取和释放。在本文中我们将探索如何创建一个简单的 pymysql 上下文管理器以简化数据库操作。
为什么使用上下文管理器
自动资源管理自动关闭数据库连接和游标即使发生异常也能确保资源被释放。代码可读性使代码更加简洁易于理解和维护。异常处理可以在退出代码块时统一处理异常。
代码实现
import pymysqlclass Connect(object):def __init__(self, host, user, password, db, charsetutf8mb4,cursor_classpymysql.cursors.DictCursor):self.config {host: host,user: user,password: password,database: db,charset: charset,cursorclass: cursor_class}self.conn pymysql.connect(self.config)self.cursor self.conn.cursor(pymysql.cursors.DictCursor)def __enter__(self):# 返回自身以便在 with 块中使用return selfdef __exit__(self, exc_type, exc_val, exc_tb):# 检查游标和连接是否打开然后关闭它们if self.cursor:self.cursor.close()if self.conn:self.conn.close()# 处理异常if exc_type:print(fAn error occurred: {exc_val})def exec_query(self, sql, **kwargs):# 执行查询并返回结果集self.cursor.execute(sql, kwargs)return self.cursor.fetchall()def exec_command(self, sql, **kwargs):# 执行非查询命令并返回影响的行数self.cursor.execute(sql, kwargs)return self.conn.commit() # commit() 返回 None你可能想要返回影响的行数简单使用
if __name__ __main__:settings {host: localhost,user: your_username,password: your_password,database: your_database,charset: utf8mb4,}with Connect(**settings) as db:results db.exec_query(SELECT * FROM your_table)for result in results:print(result)affected_rows db.exec_command(INSERT INTO your_table (column) VALUES (value))print(f受影响的行数: {affected_rows})若有错误与不足请指出关注DPT一起进步吧