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

python 连接数据库进行文件查重(SAP版本)

因为我的项目是SAP的 所以这边连接DB用的是hdbcli

需求:要检查 SAP HANA 数据库的表 PANA_IMAGE_TABLE 中是否已经存在即将上传的文件的 MD5哈希值,使用的 hdbcli.dbapi 进行查询操作。

目录

前提

检查 MD5 哈希值是否存在

解释


前提

  • 已经建立了与 SAP HANA 数据库的连接。
  • PANA_IMAGE_TABLE 中有字段(列)用来存储 MD5 值,叫做 md5_hash

检查 MD5 哈希值是否存在

假设我们的 MD5 值已经存储在变量 file_md5 中。

from hdbcli import dbapidef check_md5_exists(connection: dbapi.Connection, file_md5: str) -> bool:query = "SELECT COUNT(*) FROM PANA_IMAGE_TABLE WHERE md5_hash = ?"try:cursor = connection.cursor()cursor.execute(query, (file_md5,))result = cursor.fetchone()cursor.close()# 如果结果大于0,说明该 MD5 值已存在return result[0] > 0except dbapi.Error as err:print(f"Error checking MD5 hash: {err}")return False# 假设你已经获得了数据库连接
connection = dbapi.connect(address="your_hana_address",port="your_hana_port",user="your_username",password="your_password"
)file_md5 = "your_generated_md5_hash"  # MD5值变量if check_md5_exists(connection, file_md5):print("MD5 hash already exists in the table.")
else:print("MD5 hash does not exist in the table.")connection.close()

解释

  1. 连接对象:作为输入参数传入 check_md5_exists 函数,确保继续使用现有连接。

  2. 参数化查询:使用 ? 占位符来避免 SQL 注入攻击,将 file_md5 作为实际查询参数进行替换。

  3. 查询执行:通过创建游标并执行查询来检查表中是否已经存在该 MD5 值。

  4. 返回结果:通过 fetchone() 获取结果。如果计数大于 0,表示存在。

  5. 错误处理:加入基本的错误捕获,以处理查询过程中可能发生的异常,如连接失败或查询执行错误。

该代码示例提供了一种安全、简单且有效的方法来检查 SAP HANA 数据库中是否已存在某个文件的 MD5哈希值。通过参数化查询,安全性得到了提升。确保在执行任何数据库操作后关闭游标和连接以防资源泄露。

重点是这个sql查询语句哈 有空写个详细的 目前就是写一点往我得博客上搬运一点(●'◡'●):

SELECT COUNT(*) FROM PANA_IMAGE_TABLE WHERE md5_hash = ?  

http://www.dtcms.com/a/365831.html

相关文章:

  • RoPE位置编码缩放因子的最优解:频率维度与位置敏感度的精妙权衡
  • TypeScript:Promise的详细用法讲解
  • 面试复习题--kotlin的设计模式
  • shell内置命令
  • UART更好的封装 添加容错代码
  • Qt6用Chart模块做数据可视化?别再用老套路,看看这套35张图背后的秘密
  • [密码学实战](GBT 15843.2-2017)Java实现基于SM4的实体鉴别机制(四十八)
  • MinIO祭了,RustFS来了!
  • 关于node中的一些用到的读取文件方法
  • Dubbo3单端口多协议源码分析
  • 员工拍照泄密?U盘偷拷资料?终端数据安全如何守护?
  • G1垃圾收集器
  • 【高级】系统架构师 | 信息系统战略规划、EAI 与新技术
  • 攻防世界secret-galaxy-300
  • 深度学习----卷积神经网络的数据增强
  • 如何给JavaScript语句添加注释?
  • 19.JS
  • Jmeter怎么实现接口关联?
  • 算法题(198):数字三角形
  • 使用 Terraform、AWS 和 Python 构建无服务器实时数据管道
  • 学习React-9-useSyncExternalStore
  • Ubuntu下把 SD 卡格式化为 FAT32
  • 【工具变量】“国家级大数据综合试验区”试点城市DID(2000-2024年)
  • ArkTS状态管理V1
  • Llama v3 中的低秩自适应 (LoRA)
  • 头歌实训作业答案C++ 01
  • Proteus8 + STM32CubeMX 实现 STM32F103R6 串口通信教程
  • JMeter下载安装及使用入门
  • 常用符号 Emoji 对照表——Unicode UTF-8
  • SQLSERVER临时表