终端证书文件批量导入数据库的Python源码
用于将终端证书文件批量导入进数据库
【注意】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源码相关推荐
- 微信小程序 -- 数据库数据excel文件批量导入
一.excel文件批量导入数据到数据库 1.创建node.js函数upload,点击upload右键外部终端中安装类库 npm install node-xlsx 2.云函数代码 const clou ...
- 多个excel文件批量导入到数据库
多个excel文件批量导入到数据库 摘要:我们可以用navicate等数据库编辑器的excel导入功能将一个excel导入到数据库,但是我们有多个excel甚至成百上千怎么办?这个时候用navicat ...
- .mat文件批量转成图片——python脚本编写
.mat文件批量转成图片--python脚本编写 mat文件简介 mat文件是Matlab的数据存储的标准格式.mat文件是标准的二进制文件,还可以ASCII码形式保存和加载,在MATLAB中打开显示 ...
- 自制工具将excel文件批量导入到mongodb
使用方法 下载此工具(度盘 密码: sbv6),这是一个exe文件,双击可直接运行 将这个工具放到你要处理的表格所在的目录,比如上图中有一个年级表的示例文件 确保已启动mongodb服务 双击脚本工具 ...
- Java:实现文件批量导入导出实践(兼容xls,xlsx)
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:小卖铺的老爷爷 cnblogs.com/laoyeye/p/6938889.html ...
- solr使用网页浏览器批量导入数据库中数据(本案例是mysql)
如果想要知道如何安装solr,集成IKAnalyzer中文分词器,批量导入数据库数据,java使用参照以下本博主博文: 安装solr https://blog.csdn.net/u013294097/ ...
- Java实现文件批量导入导出实例(兼容xls,xlsx)
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON"> &l ...
- Mac使用命令行批量导入数据库数据
Mac使用命令行批量导入数据库数据 进入你的mysql安装目录 /usr/local/mysql/bin/mysql -u root -p 创建database CREATE DATABASE '你的 ...
- java导入导出有版本兼容问题_Java实现文件批量导入导出实践(兼容xls,xlsx)
小Hub领读: 使用poi导入导出xls文件还是比较容易的,有完整的项目代码,可以clone下来好好研究哈! 1.介绍 java 实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写 ...
最新文章
- 隐藏原生select下拉框的向下箭头▼
- JDBC--代码实现增删改查、及SQL注入问题解决
- JAVA删除临时文件
- linux+离线+搜狗,Ubuntu离线安装Sogou拼音(附老版本安装)
- JDK9的JShell简单使用
- 飞桨PaddleHub实现皮影戏
- 在android中使用opencv,在安卓上使用OpenCV的指南 - kdnuggets
- Powerdesigner设置表字段注释与name相同
- HDFS常用命令(总结)
- 怎样更改计算机ip,怎么快速修改电脑ip地址
- UltraEdit 26 总是偶尔提示运行的是试用模式
- 1.3Excel--公式
- Bing 必应突然不能用了(2021 年 17 日最新情况),怎么办?问题已解决
- 2012年8月编程语言就业趋势
- Diabetic Retinopathy Detection
- 微信开发公众号本地调试
- 【每日新闻】1.7万元起!华为发布首款5G折叠屏手机!
- MFC Tab控件的使用方法
- [Office] WPS Excel通过添加宏实现多张表格合并
- 18-Jenkisn-Pipelin-声明式流水线语法-triggers/stage/tool