热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

终端证书文件批量导入数据库的Python源码

用于将终端证书文件批量导入进数据库【注意】Python2和Python3,在数的进制转换上,不太一样Python2content_strbinasci

用于将终端证书文件批量导入进数据库
【注意】Python2和Python3,在数的进制转换上,不太一样


Python 2

content_str += binascii.hexlify(b)

Python 3

content_str += hex(b)[2:].zfill(2)

完整源码如下:

# -*- coding: utf-8 -*-
import os
import logging
import binascii#######################################################
# 运行程序,需要先配置证书文件路径和结果文件名
# 需要处理的RTU_ID需要预先配置在文件rtu_id_list.txt中
# 如果程序运行正常,结果文件中全部都是整齐的SQL语句
# 如果程序运行正常,结果文件中会出现错误信息
# 所有错误信息均已[Error]作为行首
######################################################## 这个是证书文件(文件夹所在父级路径)
cert_file_base = 'E:/test/PycharmProjects/ImportCert'
# 这个用于保存结果的文件名
sql_file_name = 'import_cert.sql'# 从文件rtu_id_list.txt中读取rtu_id列表
def get_rtu_list():rtu_list = []try:with open('rtu_id_list.txt', 'r') as rtu_file:rtu_ids = rtu_file.readlines()for i in range(0, len(rtu_ids)):rtu_list.append(rtu_ids[i].strip())except IOError as err:logging.error('[Error] when read rtu_id_list.txt: %s', err)finally:return rtu_list# 根据rtu_id列表,找到对应的证书文件,读取并入库
def get_cert_file(rtu_list):for rtu_id in rtu_list:cert_file_dir = cert_file_base + '/' + rtu_idtry:cert_file_list = os.listdir(cert_file_dir)except OSError as err:logging.error('[Error] when read %s: %s', cert_file_dir, err)continueif len(cert_file_list) != 1:logging.error("[Error] There be %d files in path: %s", len(cert_file_list), cert_file_dir)continueelse:print_sql(rtu_id, cert_file_dir, cert_file_list[0])# 针对一个具体的rtu,生成SQL
def print_sql(rtu_id, cert_file_dir, cert_file_name):cert_file_path = cert_file_dir + "/" + cert_file_name# logging.info('Cert file is: '+cert_file_path)try:with open(cert_file_path, 'rb') as cert_file:content_bin = cert_file.read()except IOError as err:logging.error('[Error] when read %s: %s', cert_file_path, err)content_str = ''for b in content_bin:content_str += binascii.hexlify(b) # for Python 2# content_str += hex(b)[2:].zfill(2) # for Python 3content_str += ' 'sql = "insert into fes_cert(rtu_id,cert_file_name,cert_content) " \"values(" + rtu_id + ",'" + cert_file_name + "','" + content_str.strip() + "'); "logging.info(sql)# 程序启动时,将结果文件清空
def clean_thing(file_name):try:file = open(file_name, 'w').close()except IOError as err:logging.error('[Error] when clean %s: %s', file_name, err)if __name__ == '__main__':# 清空结果文件clean_thing(sql_file_name)# 配置日志(SQL文件)logging.basicConfig(level=logging.DEBUG, filename=sql_file_name, filemode='a', format='%(message)s')# 运行业务逻辑get_cert_file(get_rtu_list())

推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • SQL中UPDATE SET FROM语句的使用方法及应用场景
    本文详细介绍了SQL中UPDATE SET FROM语句的使用方法,通过具体示例展示了如何利用该语句高效地更新多表关联数据。适合数据库管理员和开发人员参考。 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
author-avatar
天使犯罪de快乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有