成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用 Python 實(shí)現(xiàn) PowerDesigner 數(shù)據(jù)模型文件的處理

Carl / 749人閱讀

摘要:簡述目前在銀行研發(fā)中心做項目管理工作。實(shí)現(xiàn)的可以解決這個過程中的生成與數(shù)據(jù)庫實(shí)例的比對在環(huán)境下查看數(shù)據(jù)字典等功能。只需要突破一個關(guān)鍵點(diǎn)的模型文件文件實(shí)際上是一個標(biāo)準(zhǔn)的數(shù)據(jù)文件沒想到吧一但了解了這一點(diǎn),實(shí)現(xiàn)對文件的解析就變成了對文件的處理。

簡述

目前在銀行研發(fā)中心做項目管理工作。我們單位的項目經(jīng)理從需求、設(shè)計、編碼到測試以及上線,都要有很大程度的參與。沒有工具支持,很多事根本忙不過來、或者沒法在有限的時間里保證項目質(zhì)量。
大概半年前開始接觸PYTHON,多多少少寫了一些能與項目結(jié)合使用的小工具。
從自動化交易接口生成工具,到一些適合我們項目使用的測試工具。
因?yàn)轫椖啃再|(zhì),我手頭大部分活兒都是C平臺上開發(fā)的,我自己也是對C比較熟。 使用PYTHON之后,感覺大好,比起用C實(shí)現(xiàn),一些想法能以快得多的速度用python得以落實(shí)或驗(yàn)證,PDMHandler是這些小程序中的一個。

目前此代碼托管在GitHub上:

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

源碼地址:[email protected]: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ù)庫實(shí)例、業(yè)務(wù)代碼開發(fā)。

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

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

實(shí)現(xiàn)原理

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

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

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

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

剩下的事就是:

(1)選用合適的python的xml庫 (注:PDMHandler采用了xml.dom.minidom)
(2)分析.pdm文件的詳細(xì)結(jié)構(gòu)
(3)定義PDMHandler工具類的API接口,實(shí)現(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
源碼地址:[email protected]: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 [SybasePowerDesigner 15Examples]

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 :

shell P: 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..)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110326.html

相關(guān)文章

  • Python 實(shí)現(xiàn) PowerDesigner 數(shù)據(jù)模型文件處理

    摘要:簡述目前在銀行研發(fā)中心做項目管理工作。實(shí)現(xiàn)的可以解決這個過程中的生成與數(shù)據(jù)庫實(shí)例的比對在環(huán)境下查看數(shù)據(jù)字典等功能。只需要突破一個關(guān)鍵點(diǎn)的模型文件文件實(shí)際上是一個標(biāo)準(zhǔn)的數(shù)據(jù)文件沒想到吧一但了解了這一點(diǎn),實(shí)現(xiàn)對文件的解析就變成了對文件的處理。 簡述 目前在銀行研發(fā)中心做項目管理工作。我們單位的項目經(jīng)理從需求、設(shè)計、編碼到測試以及上線,都要有很大程度的參與。沒有工具支持,很多事根本忙不過來...

    laoLiueizo 評論0 收藏0
  • PowerDesigner 與 SQL Server 協(xié)作(貳)數(shù)據(jù)模型數(shù)據(jù)相互轉(zhuǎn)換

    摘要:數(shù)據(jù)模型轉(zhuǎn)換成數(shù)據(jù)庫根據(jù)設(shè)計生成數(shù)據(jù)庫腳本,設(shè)置腳本存放路徑和名稱,選擇,選擇配置好的數(shù)據(jù)源,下可以選擇將哪些數(shù)據(jù)模型轉(zhuǎn)換成表有數(shù)據(jù)的表的數(shù)據(jù)模型可以去掉勾,然后點(diǎn)擊確定如果不是第一次執(zhí)行該操作,會出現(xiàn)是否覆蓋的選項,選擇是就可以了這里會 數(shù)據(jù)模型轉(zhuǎn)換成數(shù)據(jù)庫 根據(jù) DB 設(shè)計生成數(shù)據(jù)庫腳本,Database-Generate Database...;showImg(https://...

    hot_pot_Leo 評論0 收藏0
  • 2017年1月前端月報

    摘要:平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。年以前看這個網(wǎng)址概況在線地址前端開發(fā)群月報提交原則技術(shù)文章新的為主。 平日學(xué)習(xí)接觸過的網(wǎng)站積累,以每月的形式發(fā)布。2017年以前看這個網(wǎng)址:http://www.kancloud.cn/jsfron... 概況 在線地址:http://www.kancloud.cn/jsfront/month/82796 JS前端開發(fā)群月報 提交原則: 技...

    FuisonDesign 評論0 收藏0

發(fā)表評論

0條評論

Carl

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<