Python—pdm解析
文章目录
- 定义文件
- 配置文件
- 组件方法
- 文件解析
- 数据库写入
pdm文件实际以xml的格式存储
需求场景:需要将pdm的文件解析为数据库中的元数据;
项目结构:
E:.│ common.py
│ main.py
│ tableddl.sql
│
├─conf
│ env_conf.yaml
│
├─pdmDir
│ xxxxxx.pdm
│
└─__pycache__common.cpython-39.pyc
定义文件
- tableddl.sql 内容
-- Create table
create table T_PARSE_OBJECTS_FROMPDM
(object_name VARCHAR2(100) not null,object_type VARCHAR2(50) not null,object_comments VARCHAR2(1000),object_ddl CLOB,creationdate DATE,creator VARCHAR2(100),modificationdate DATE,modifier VARCHAR2(100),sc_sj DATE
);-- Create table
create table T_PARSE_COLUMNS_FROMPDM
(object_name VARCHAR2(300) not null,column_name VARCHAR2(4000) not null,column_id NUMBER,pk_flag VARCHAR2(30),data_type VARCHAR2(300),data_length NUMBER,data_precision NUMBER,data_scale NUMBER,nullable VARCHAR2(30),column_comments VARCHAR2(1000),creationdate DATE,creator VARCHAR2(100),modificationdate DATE,modifier VARCHAR2(100),sc_sj DATE
);
配置文件
env_conf.yaml 环境配置内容如下:
# 配置环境信息和输出对象target_db:mainFlag: TruedbType: oraclehost: xx.xx.xx.xxport: 1530dbsid: xxxusername: xxxxpassword: xxxxoutput_object:target_list:name: t_xxx_frompdmstru: [object_name, object_type, object_comments, object_ddl, creationdate, creator, modificationdate, modifier, sc_sj]target_columns:name: t_xxx_frompdmstru: [object_name, column_name, column_id, pk_flag, data_type, data_length, data_precision, data_scale, nullable, column_comments, creationdate, creator, modificationdate, modifier, sc_sj]pdm_info:name: "xxxxxxxx.pdm"
说明:Pdm 文件放到 ./pdmDir/ 下,配置文件放置在 ./conf/ 下;
组件方法
- cx_Oracle的连接池,实现单个线程的 connection 获取;
- xml.etree.ElementTree 的 xpath 对象查找;
- concurrent.futures 的 线程池,实现对象的并行解析和入库;
- yaml 配置文件解析;
文件解析
main.py 代码如下:
# -*- coding= utf-8 -*-
"""
@DevTool : PyCharm
@Author : xxx
@DateTime : 2022/8/2 15:19
@FileName : main.py
"""
import sys
import xml.etree.ElementTree as et
import os.path
import yaml
import time
from datetime import datetime
import threading
from concurrent.futures import ThreadPoolExecutor
from concurrent.futures import as_completed
import common
import cx_Oracleif __name__ == "__main__":conf_path = os.getcwd() + '\conf\env_conf.yaml'with open(conf_path, mode="r", encoding="utf-8") as f:yamlConf = yaml.load(f.read(), Loader=yaml.FullLoader)# 获取目标库环境信息dbType = yamlConf["target_db"]["dbType"]host = yamlConf["target_db"]
Python—pdm解析相关推荐
- 了解女友的心还不如了解Python之在Python中解析和修改XML
2021年12月15日 10:14 · 阅读 30 摘要: 工作中我们时常需要解析用不同语言编写的数据.Python 提供了许多库来解析或拆分用其他语言编写的数据.在这篇 Python XML 解析 ...
- python列表解析的新方法
python 列表解析我感觉是python非常灵活的一个地方,一开始接触它的时候,特别是之前学过其它的语言, 你会感觉很不习惯,怎么看怎么不对劲,老是觉的哪个地方怪怪的,这就是列表解析的魔力所在. p ...
- 如何在Python中解析YAML文件
如何在Python中解析YAML文件? #1楼 不依赖C标头的最简单,最纯净的方法是PyYaml( 文档 ): #!/usr/bin/env pythonimport yamlwith open(&q ...
- python dpkt解析ssl流
用法:python extract_tls_flow.py -vr white_pcap/11/2018-01-10_13-05-09_2.pcap -o pcap_ssl_flow.txt & ...
- 用Python提取解析pdf文档中内容
用Python提取解析pdf文档中内容 文章目录: 参考: 1.https://blog.csdn.net/tmaczt/article/details/82876018 # Tika库 2.http ...
- 【Android 逆向】使用 Python 代码解析 ELF 文件 ( PyCharm 中进行断点调试 | ELFFile 实例对象分析 )
文章目录 一.PyCharm 中进行断点调试 二.ELFFile 实例对象分析 一.PyCharm 中进行断点调试 在上一篇博客 [Android 逆向]使用 Python 代码解析 ELF 文件 ( ...
- 密码算法中iv值是什么_?标检测中的?极?值抑制算法(nms):python代码解析
⾮极⼤值抑制(Non-Maximum Suppression)原理 ⾮极⼤值抑制,顾名思义,找出极⼤值,抑制⾮极⼤值.这种思路和算法在各个领域中应⽤⼴泛,⽐如边缘检测算法canny算⼦中就使⽤了该⽅法 ...
- python简介pdf_PDFMiner首页、文档和下载 - Python PDF 解析器 - OSCHINA - 中文开源技术交流社区...
PDFMiner 是一个 Python 的 PDF 解析器,可以从 PDF 文档中提取信息.与其他 PDF 相关的工具不同,它侧重的是获取和分析文本数据.PDFMiner 允许获取某一页中文本的准确位 ...
- [Python]ConfigParser解析配置文件
近期发现非常多接口配置都硬编码在souce file中了,于是就看了下python怎么解析配置文件,重构下这一块. 这个应该是早就要作的... 配置文件: [mysqld] user = mysql ...
- python自动解析json_Python语言解析JSON详解
本文主要向大家介绍了Python语言解析JSON详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. JSON 函数使用 JSON 函数需要导入 json 库:import jso ...
最新文章
- python 作用域 前缀_Python面试题:杂项内容
- 'Lock wait timeout exceeded; try restarting transaction'问题
- struts2 文件上传与下载 (初始文件上传的底层技术)——struts2第七讲
- Python:入门(3)
- Linux内核如何管理内存
- HYSBZ - 1588 营业额统计(Splay)
- 建站手册-网站主机:电子商务主机
- CANopen | 对象字典OD 03 - 启动CANopen节点的服务数据对象SDO
- 某易游戏经典吃豆豆动画404页面源码
- Visual studio 2005 恢復默認設置的方法
- 利用EA根据sql脚本生成数据库文档
- 51nod 1050 循环数组最大子段和 单调队列优化DP
- MASM6.11安装
- 非负矩阵分解 NMF 总结
- Python中切片(Slicing)的运用(:运算符)
- Exp8 Web基础 20154328 常城
- 基于腾讯云cvm的云原生环境搭建
- java打字小游戏_JAVA打字小游戏
- GNU Make 使用手册!
- 如何评价一个好系统?