国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Carl / 731人閱讀

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

簡(jiǎn)述

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

目前此代碼托管在GitHub上:

項(xiàng)目主頁(yè):https://github.com/petjiang/PDMHandler

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

編寫背景

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

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

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

目的

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

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

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

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

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

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

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

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

剩下的事就是:

(1)選用合適的python的xml庫(kù) (注:PDMHandler采用了xml.dom.minidom)
(2)分析.pdm文件的詳細(xì)結(jié)構(gòu)
(3)定義PDMHandler工具類的API接口,實(shí)現(xiàn)對(duì).pdm的操作、解析

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

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

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

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

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元素的位置不再冗述,請(qǐng)見代碼PDMHandler.py
以下是Github中此項(xiàng)目的README.md文件,直接貼一份過來供參考 :)
歡迎fork/clone此項(xiàng)目,提出建議
項(xiàng)目主頁(yè):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 [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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/110326.html

相關(guān)文章

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

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

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

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

    hot_pot_Leo 評(píng)論0 收藏0
  • 2017年1月前端月報(bào)

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

    FuisonDesign 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Carl

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<