日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

audino python_用 Python 实现 PowerDesigner 数据模型文件的处理

發(fā)布時間:2023/12/10 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 audino python_用 Python 实现 PowerDesigner 数据模型文件的处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡述

目前在銀行研發(fā)中心做項目管理工作。我們單位的項目經(jīng)理從需求、設(shè)計、編碼到測試以及上線,都要有很大程度的參與。沒有工具支持,很多事根本忙不過來、或者沒法在有限的時間里保證項目質(zhì)量。

大概半年前開始接觸PYTHON,多多少少寫了一些能與項目結(jié)合使用的小工具。

從自動化交易接口生成工具,到一些適合我們項目使用的測試工具。

因為項目性質(zhì),我手頭大部分活兒都是C平臺上開發(fā)的,我自己也是對C比較熟。 使用PYTHON之后,感覺大好,比起用C實現(xiàn),一些想法能以快得多的速度用python得以落實或驗證,PDMHandler是這些小程序中的一個。

目前此代碼托管在GitHub上:

源碼地址:git@github.com:petjiang/PDMHandler.git

編寫背景

我們項目常用PowerDesigner做項目的數(shù)據(jù)建模管理。

銀行對運(yùn)行中的系統(tǒng)管理是比較嚴(yán)格的,若部署產(chǎn)生問題,可能波及到客戶關(guān)系、輿情、賬務(wù)等,風(fēng)險不小,所以對項目組的要求也十分嚴(yán)苛。

銀行系統(tǒng)由于可靠性要求高,所以技術(shù)上不會用到最前延的。但業(yè)務(wù)需求通常較為復(fù)雜、而且變化快,數(shù)據(jù)模型變化相應(yīng)也就頻繁。

目的

我們常見的使用場景,就是修改PowerDesigner模型文件(.pdm),轉(zhuǎn)成SQL,在開發(fā)環(huán)境上變更數(shù)據(jù)庫實例、業(yè)務(wù)代碼開發(fā)。

大量并發(fā)需求來時,pdm常被改亂,時間一長pdm與數(shù)據(jù)庫實例的一致性就不能得到保證了。一些較大型的系統(tǒng)幾百上千張表,靠人工核對一致性是很苦的體力活兒。

PDMHandler實現(xiàn)的API可以解決這個過程中的SQL生成、PDM與數(shù)據(jù)庫實例的比對、在unix環(huán)境下查看pdm數(shù)據(jù)字典等功能。

實現(xiàn)原理

其實,實現(xiàn)原理還是比較簡單的。

只需要突破一個關(guān)鍵點:

PowerDesigner的模型文件(.pdm文件)實際上是一個標(biāo)準(zhǔn)的XML數(shù)據(jù)文件

沒想到吧?:)

一但了解了這一點,實現(xiàn)對.pdm文件的解析就變成了對xml文件的處理。

剩下的事就是:

(1)選用合適的python的xml庫 (注:PDMHandler采用了xml.dom.minidom)

(2)分析.pdm文件的詳細(xì)結(jié)構(gòu)

(3)定義PDMHandler工具類的API接口,實現(xiàn)對.pdm的操作、解析

附注:PDM文件結(jié)構(gòu)簡析

所有的"包、表定義、表字段定義、索引、索引字段定義等“全都定義在.pdm文件的這個路徑下(以類文件系統(tǒng)路徑方式表示):

shell/Model/o:RootObject/c:Children/o:Model

比如(包 - o:Package)定義:

注意:包定義是可嵌套的,/c:Packages/o:Package可反復(fù)嵌套;另外o:Model本身也可以看作一個包

shell/Model/o:RootObject/c:Children/o:Model/c:Packages/o:Package ...

再如(表 - o:Table)定義:

shell/Model/o:RootObject/c:Children/o:Model/c:Packages/o:Package/c:Tables/o:Table ...

其它PDM元素的位置不再冗述,請見代碼PDMHandler.py

以下是Github中此項目的README.md文件,直接貼一份過來供參考 :)

歡迎fork/clone此項目,提出建議

項目主頁:https://github.com/petjiang/PDMHandler

源碼地址:git@github.com:petjiang/PDMHandler.git

PDMHandler

A tool class to handle sybase PowerDesigner datafile(.pdm).

Currently, it is able to handle PhysicalDiagram in .pdm.

Source Code Intro.

PDMHandler.py

The class implementation of PDMHandler.

use following command to see help docs (sorry that I type it in Chinese):

shell$ echo "import PDMHandler; help(PDMHandler);"|python

TEST PDM files

PowerDesigner model file (.pdm) is prepared in [repodir]/src/testpdm

use these as input argument for testing the example1.py

* NOTICE: (.pdm) files come from PowerDesigner15 directory [Sybase\PowerDesigner 15\Examples]

example1.py

It is a usecase of PDMHandler class, read it as a reference code.

example1.py shows 5 levels of pdm file -- Package/Table/Column/Index/IndexColumn

each level has their own attributes which are defined in PDMHandler class :

pythonPKG_ATTR_LIST=["Name","Code","CreationDate","Creator","ModificationDate","Modifier"]

TBL_ATTR_LIST=["Name","Code","CreationDate","Creator","ModificationDate","Modifier", "PhysicalOptions"]

COL_ATTR_LIST=["Name","Code","CreationDate","Creator","ModificationDate","Modifier", "DataType","Length","Column.Mandatory","Comment"]

IDX_ATTR_LIST=["Name","Code","CreationDate","Creator","ModificationDate","Modifier", "PhysicalOptions","Unique"]

IDXCOL_ATTR_LIST=["CreationDate","Creator","ModificationDate","Modifier"]

By running :

shell$ python example1.py testpdm/Consol.pdm

shows the output to standout :

shellP: Duplicated Database DUPLICATED_DATABASE lpommier

T: Duplicated Account DUPLICATED_ACCOUNT vaudino

T-PATH: /Model/o:RootObject/c:Children/o:Model/c:Tables/o:Table

C: Email EMAIL char(256) 256 1

C: Name NAME char(256) 256

C: URL URL char(256) 256

I: ACCOUNT_PK ACCOUNT_PK 1

IC: EMAIL

T: Duplicated Auteurs DUPLICATED_AUTEURS vaudino

T-PATH: /Model/o:RootObject/c:Children/o:Model/c:Tables/o:Table

C: Email EMAIL char(256) 256 1

C: Title TITLE char(256) 256 1

I: AUTEURS_PK AUTEURS_PK 1

IC: EMAIL

IC: TITLE

I: Publication_FK PUBLICATION_FK

IC: EMAIL

I: Authors_FK AUTHORS_FK

IC: TITLE

T: Duplicated Publication DUPLICATED_PUBLICATION vaudino

T-PATH: /Model/o:RootObject/c:Children/o:Model/c:Tables/o:Table

C: Title TITLE char(256) 256 1

C: Email EMAIL char(256) 256 1

C: Pub_Title PUB_TITLE char(256) 256

C: Summary SUMMARY long varchar

C: Keywords KEYWORDS char(256) 256

I: PUBLICATION_PK PUBLICATION_PK 1

IC: TITLE

I: PUBLISHER_FK PUBLISHER_FK

IC: EMAIL

I: REFERENCES_FK REFERENCES_FK

IC: PUB_TITLE

Why I write it ?

Yes,it is just a tiny code for fun.

But I hope more features will be added in it, and it will be useful to solve some headachy problem. Just like :

compare the online database instance with PDM file.

autogen SQL schema from PDM file (PowerDesigner's auto-gen setting sucks)

autogen ORM fro PDM file (seems awesome?!,support embed c,SQLAlchemy..)

總結(jié)

以上是生活随笔為你收集整理的audino python_用 Python 实现 PowerDesigner 数据模型文件的处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日产精品久久久久久久蜜臀 | 一区二区不卡免费视频 | 欧美福利专区 | 在线观看黄色动漫 | 日韩成人av电影 | 精品免费一区二区 | 狠狠操夜夜操 | 国产成人无码精品久久久性色 | 国产激情视频一区 | 99精品视频一区二区 | 国产美女一区二区 | 日本 欧美 国产 | 麻豆69xxnxxporn | 欧美三级视频网站 | 永久免费的av网站 | 色伊人网 | 最好看的mv中文字幕国语电影 | 久久久一区二区三区四区 | 免费三级av | 国产精品亚洲专区无码牛牛 | 色吊丝av中文字幕 | 98视频在线 | 国产51页 | 后进极品美女圆润翘臀 | 黄色网址链接 | 成人免费在线观看网站 | 日本后进式猛烈xx00动态图 | 中文字幕精品一区二区三区精品 | www狠狠操 | 99久久精品无免国产免费 | 国产成人av网站 | 一级淫片免费 | 男人用嘴添女人下身免费视频 | 国产精品久久久久99 | 日韩毛片网站 | 91麻豆产精品久久久久久夏晴子 | 8x8ⅹ成人永久免费视频 | 国产一级二级 | 一出一进一爽一粗一大视频 | 777黄色 | 国产强伦人妻毛片 | 国产视频在线观看一区 | 国产精品区一区二 | 中文字幕日韩av | 靠逼视频免费网站 | 天天综合天天综合 | 亚洲综合一区中 | 久久视| 男人av在线| 97国产精品久久 | 亚洲欧美日韩在线看 | 久在线视频 | va免费视频| 三级第一页 | 成人黄色在线观看 | 极品美女高潮 | 亚洲在线成人 | 开心激情亚洲 | 香蕉视频99 | 欧美日韩在线视频观看 | 激情天堂网 | 香蕉视频在线观看黄 | 一区二区网 | 亚洲欧美第一页 | 熟妇人妻一区二区三区四区 | 日日夜夜爱 | 99久久这里只有精品 | 久久99精品久久久久婷婷 | 国色天香av| 欧美色xxxx| exo妈妈mv在线播放高清免费 | а√在线中文网新版地址在线 | 欧美囗交做爰视频 | 亚洲欧美一二三区 | 天天色天天综合 | 国产又粗又猛又黄又爽 | 不卡视频免费在线观看 | 少妇久久久久久 | 免费国产 | 欧美另类videosbestsex | 成人h动漫精品一区二区器材 | 特级西西人体wwwww | 毛片基地免费 | 日韩av手机在线播放 | 国产综合欧美 | 精品一区二区亚洲 | 中国毛片网 | 欧美成人精品一区二区男人小说 | 欧美成人免费视频 | 能免费看黄色的网站 | 波多野结衣a级片 | 日本天堂网在线观看 | 日本在线播放视频 | 亚洲精选一区二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 一本色道久久88亚洲精品综合 | 色香av| 人人妻人人澡人人爽精品 | 国产一av |