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

数据库查询语句的封装思路

import yaml def yamlread(path): # 打开并读取YAML文件 with open(path, 'r', encoding='utf-8') as file: config = yaml.safe_load(file) return configc

创建一个文件操作方法读取文件信息

class dboperations: def __init__(self, config_path=r'D:\PycharmProjects\PythonProject\config\db.yaml'): self.config = fileoperation.yamlread(config_path) self.connect = None self._auto_commit = True @property def get_connect(self): """获取连接""" dbconfig = self.config['database'] # 修正:正确获取配置参数 self.connect = pymysql.connect( host=dbconfig['host'], user=dbconfig['user'], password=dbconfig['password'], database=dbconfig['database'], charset='utf8mb4', autocommit=self._auto_commit ) return self.connect @contextmanager def get_cursor(self, cursor_type=pymysql.cursors.DictCursor): """上下文管理器,自动处理游标和事务""" conn = self.get_connect cursor = conn.cursor(cursor_type) try: yield cursor if self._auto_commit: conn.commit() except Exception as e: conn.rollback() raise e finally: cursor.close() def query_fields_advanced(self, table_name,fields_config,conditions=None): try: with self.get_cursor() as cursor: sql = f"SELECT {fields_config} FROM {table_name}" if conditions: sql += f" WHERE {conditions}" cursor.execute(sql) results = cursor.fetchall() return results except Exception as e: print(f"查询失败: {e}") return None def close(self): """关闭连接""" if self.connect: self.connect.close() self.connect = None

创建数据库操作类封装操作动作

def debg_quarydata(): # 创建数据库操作对象 db = dboperations() table_name = db.config['testmessage']['tablename'] fieldsconfigs = db.config['testmessage']['fields_config'] #将列表转换为数据模式, [a,b]->a,b select_fields = ','.join(fieldsconfigs) print(select_fields,table_name) results = db.query_fields_advanced(table_name,select_fields) print(results) # 关闭连接 db.close()

结果类中进行调用

http://www.jsqmd.com/news/820139/

相关文章:

  • static存储类说明符、cpp的private变量 的关系
  • 轻量级分布式追踪库Granclaw:从核心原理到Node.js实战集成
  • 一分钟为 Hermes Agent 配置 Taotoken 后端服务
  • 查看端口是否开放
  • 【信息科学与工程学】【数据科学】第一百零二篇 几何分析02
  • 同一画面,9宫格视频如何创作?这个方法最简单
  • Claude Code自动记忆系统:四种记忆类型详解
  • 前端项目模板解析:基于Vite与Vue 3的工程化实践指南
  • FPGA实现JPEG-LS硬件编码器:架构、算法与工程实践
  • 让小波核学会变形:基于可学习Laplace小波和最大化聚合路由胶囊网络的旋转机械故障诊断(PyTorch)
  • 目前正规的饲料颗粒机公司好不好用
  • 实测Taotoken在多模型切换时的响应延迟与稳定性表现
  • 基于ROS2和YOLOv5的宇树Go2机器狗人脸表情识别与情感交互系统:开发血泪史
  • 为什么有些测试员干了十年还是执行层?差距在于“业务翻译能力”
  • 聚焦AI赋能,共拓国际蓝海
  • AEB系统有哪些应用场景?AEB系统有哪些感知方案
  • 别把数据安全方案上线当成终点,系统开着不代表它在干活
  • YAGNI原则在DeepSeek模型微调中的隐性失效(2024真实故障复盘)
  • 从瑞利商到投影矩阵:LDA降维的数学推导与几何直观
  • LangGraph-AI:基于有状态图计算编排复杂AI工作流
  • React Markdown渲染深度实战:构建安全高效的现代Web内容系统
  • ARMv8/v9处理器特性寄存器解析与应用
  • 浏览器扩展开发实战:实现可视化网络请求防火墙与元素级请求溯源
  • 无ID推荐系统技术解析:从冷启动到工程落地的四大范式
  • 2026企业AI Agent狂飙突进!3000+案例揭示6大趋势,头部企业已部署23个,你还在等什么?
  • 为你的AI智能体项目选择最佳模型,Taotoken模型广场使用心得
  • 发现macOS窗口管理新境界:Topit如何用三步置顶技术提升多任务效率300%
  • Synopsys ARC HS处理器架构与嵌入式系统优化
  • Python图的存储与遍历全解:三种存储方式 +BFS/DFS
  • 沈阳不易踩坑的AI矩阵获客团队是哪家?