专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

采用python下的erdantic库将系统模型文件生成ER

  项目中的文档经常有展示ER图的要求,可以采用PD等工具对数据库进行逆向工程生成。但是这些工具一般只能从数据库获取英文的字段名,对于业务信息的展示并不如中文名称的含义直观。
  在作者所在的单位有自己的开发平台,及低代码工具。业务模型是用XML来定义描述的,包括了数据库结构和页面元素。对于简单的字典形业务,进行模型配置后即可以通过低代码引擎自动实现数据库表的创建和前端HTML页面的生成,十分方便。对于复杂的业务,需要在视图层进行已定义接口的二次开发来实现。整个过程中并没有采用任何CDM设计工具。所以从模型生成EP图就是一个需求,对于小一些的项目,可以用工具在画一个对应的。对于几百个业务对象的项目,再次画就是一个负担而且容易出现属性不对应的情况。
  所以考虑有没有通过程序生成ER图的工具,erdantic就是这样一个库,可以把Python的类生成对应的ER图。
  这里要明确,我们只需要把类之间的关系定义出来就行。并不需要用Python再实现一下现有的系统。我们的业务模型在Asp。net上用XML描述,在springboot上用Json描述,只需要把这些模型里的定义转换成Python类即可。
  系统模型生成的EP图安装相关库过程1。下载graphviz
  2。在默认目录下安装graphviz
  3。安装pygraphviz
  注意这里就用到graphviz默认的安装路径了pythonmpipinstallglobaloptionbuildextglobaloptionIC:ProgramFilesGraphvizincludeglobaloptionLC:ProgramFilesGraphvizlibpygraphviz
  4。安装erdantic
  pipinstallerdantic
  直接安装的版本会有中文乱码,需要安装开发版
  5。修改开发版中的配置,增加中文字体
  要修改的文件为erd。py
  修改成微软雅黑字体
  开发过程1。解析现有模型
  先对模型进行一些处理,将业务模型中相对独立的类型都放到前面(Python对类引用时先后关系会有要求)然后分析类型间的依赖关系,这里的原理是拓扑排序。本人的测试代码用C编写。并用到了一个库TopologicalsortinginCsharp
  2。在C代码中将业务模型里的类型都生成Python类代码,就是一个字符串替换,如下代码做过删减,仅为示例。
  staticvoidGeneratePythonContent(IListDemClasscls,DemModelmodel){stringmemberTMemberName:MemberType;stringdataTypeTclassClassNameEn(BaseModel):MemberNames;StringBuildersbnewStringBuilder();foreach(varclassItemincls){ListstringmemberResultnewListstring();varcommonMembersclassItem。GetCommonMembers();foreach(varcommonMemberincommonMembers){memberResult。Add(memberT。Replace(MemberName,name)。Replace(MemberType,int));}vardependencyMembersclassItem。Members。Except(commonMembers);foreach(varmemberindependencyMembers){if(member。IsMultiInstance){memberResult。Add(memberT。Replace(MemberName,member。DisplayName)。Replace(MemberType,List〔member。DataTypeName〕));}else{memberResult。Add(memberT。Replace(MemberName,member。DisplayName)。Replace(MemberType,member。DataTypeName));}}stringdataTypeResultdataTypeT。Replace(ClassNameEn,classItem。Name)。Replace(MemberNames,string。Join(,memberResult));sb。AppendLine(dataTypeResult);}stringccsb。ToString();}
  最终生成的Python类格式为:
  3。组织Python类到一个py文件,并通过erdantic生成图!usrbinpython3coding:utf8importerdanticaserdfromerdantic。examples。pydanticimportPartyfromdatetimeimportdatetimefromtypingimportListfrompydanticimportBaseModelclassChannelType(BaseModel):主键:intname:str其他的类型略。。。classVideoManagement(BaseModel):主键:int名称:str提交时间:datetime编号:str备注:str文件:List〔str〕ProjectNode:str提交人:dpsUser指定一个基础类VideoManagement。updateforwardrefs(locals())diagramerd。create(VideoManagement)diagram。draw(diagram。png)

在非洲工作的中国男人,为什么很少有和当地女孩结婚的?我表哥在非洲工作两年,找了一个当地的女孩做女朋友,当女孩提出结婚的时候,表哥却拒绝了,而且还连忙跑回国了,直到后面才知道他回来的真实原因。非洲这个地方相信很多人都知道,大部分国家都买双色彩票单注买了20倍是什么样的感觉?我身边有个同事,经常一次买50倍。结果就是每买一次就为福利事业贡献100块钱。省点劲吧,一倍都搞不上,还买20倍,还是钱多吧,这么多年了,像你说的特等五百万的票种,我一次翻倍的都没朋友欠我8万元,但他早已是失信被执行人,我还有必要起诉他吗?必须要起诉,最后虽然不能拿到钱,但是自己的权利一定要及时维护。更何况,一旦诉讼时效过了,那时候想拿回钱来就基本上不可能了。可以考虑让他续写借条或欠条,并保留好转账或现金交付凭证,只我女朋友是护士,工作太辛苦,想让她转行,大家怎么看?谢谢邀请!!护士上夜班这是常态化,尤其是刚入职的护士,上夜班就更频繁!!作为一名医护人员针对这个问题,个人认为有以下几个方法1如果条件允许,可以申请调科室,去一些不用上夜班的科室,农民工在工地宿舍突发疾病死亡,工地老板有责任吗?可能没有责任或责任很小。一从工伤角度来说,工伤保险条例第十四条规定职工有下列情形之一的,应当认定为工伤(一)在工作时间和工作场所内,因工作原因受到事故伤害的(二)工作时间前后在工作美国退伍军人怎样管理?哨兵小虎第479条回答。再回答这个问题之前,先介绍下美军的一些小知识1。全志愿役美国自从1973年越战后,国内公众厌战民间逃避兵役成风。公众对政府的征兵制(义务兵役制度)颇有微词,去南宁旅游,有哪些必去的景点?说实话,南宁并不算是特别好的旅游城市,反而是广西其他地方有着丰富的旅游资源,大部分游客只是把南宁做为中转站稍做停留,不会当做主要的目的地,所以如果时间宽裕还是更推荐去广西三江桂林北野猪这么多,当农民被野猪攻击时,出于防卫把野猪打死,违法吗?宁愿让野猪伤人也千万别去伤野猪,野猪是保护动物,人可不是保护动物,法律有规定的,伤了野猪是要判刑的,这个有先例,野猪伤了人是不会判野猪的刑的,所以人尽量让着点野猪,自己种的粮食就让在广西桂林退休养老金四千是个什么水平?桂林是个山水甲天下的城市,不仅中国有名,在全世界都是有名的。但桂林的经济实力没有山水那么有名,2019年全市的生产总值(GDP)为2106亿,2020年的GDP为2130亿元,在广当今年轻人创业,什么行业最有前途?毫无疑问,就是新经济!何为新经济?自然对标的就是老经济,基于5G商业环境布局的互联网社交内容电商,我们成为新经济,而传统行业,我们称之为老经济。时代在进步,科技在迭代,社会的发展是职场中是工作能力重要,还是跟上级领导同事搞人际关系重要?刚进入职场的新人,历史证明人际关系比工作能力重要!刚进入职场的新人,一般工作能力都不强。要提高工作能力只有多磨练,只有不耻下问虚心多学习,才能逐步提高自己的工作能力。没有较好的人际
一个80后的手机编年史1998年警校上学的时候家里给买的人生中第一部手机摩托罗拉328C,也是曾经风靡一时的掌中宝,这个手机只能用大手机卡,就是整张手机卡塞进手机背面,遇到信号不好的地方,还要把天线拔出目前最拿不出手的3款手机,出场就是差评,价格虚高配置低目前最拿不出手的3款手机,出场就是差评,价格虚高配置低,快看你踩坑了没华为nova9华为nova9配置各方面都没表现出它应该有的水平,它仅仅支持4G网络,并且搭载的是骁龙778G处自游家价格公布,30万左右的售价,你觉得能接受吗?头条创作挑战赛就在昨天,自游家上市发布了,售价从27。88万元到31。88万元区间,我不知道大家怎么看待这个价格,我是觉得这个价格是需要有相当大的自信和硬件实力才敢叫卖的价格。要不比1英寸大底更大?手机影像发展方向在哪随着智能手机的逐渐发展进步,各厂商也在寻找不同的可拓展方向。且一直以来,智能手机的重要衡量项目除了核心性能外,影像支持也备受关注。最近几年,越来越多的手机厂商在拍摄方面带来新突破。高性价比投影仪你还在犹豫吗?随着投影仪市场的需求量增加各大厂商加紧生产各类投影仪的产量,市场上的投影仪五花八门,令人眼花缭乱。但是不同品牌的投影仪的性价比不同,其质量也不尽相同。现在很多家庭都开始增加投影仪的全系A17芯片iPhone15曝光,iPhone14跌至大米价遭砸场命运iPhone14没新意,iPhone15曝光,全系A17芯片高刷打孔屏4800万主摄,如果真是这样的话,还真不如再等一年。当然iPhone14系列手机才刚刚发布,iPhone15系华为任命汪涛为企业BG总裁李鹏为运营商BG总裁钛媒体独家钛媒体App独家获悉,华为内部已经公布,任命汪涛为企业BG总裁,同时其继续担任ICT基础设施业务管理委员会主任另外,根据华为官微发布的消息,李鹏为运营商BG总裁。稍早前的10月7日25款扫拖一体机比较试验科沃斯云米海尔等6款清扫性能超95能够解放双手的扫拖一体机逐渐成为备受大家欢迎的懒人清洁神器。但面对种种选择,消费者应该如何挑选?为了给消费者提供商品选购信息,了解市场上销售的不同扫拖一体机产品的综合能力,南京市消荣耀80部分配置参数曝光,搭载8Gen1处理器2亿像素主摄据网上平台信息,荣耀80系列手机预计将在12月份发布,目前该系列手机的相关配置参数已有不断曝光。荣耀80系列预计将推出三款机型,分别为标准版Pro版和Pro版。在移动平台上标准版搭预装MIUI14,小米13好消息,基本确定首发骁龙8Gen2小米一般会年底的时候发布数字系列新旗舰,比如小米12系列手机就在去年12月的时候发布,而今年的数字系列新旗舰的入网时间比较早。小米13系列手机早在9月的时候就已经入网,根据爆料显示70超大屏OLED电视3年后有望破100万台,这事值得兴奋吗?从大屏走向超大屏,这是彩电市场最为明确的方向。在整体市场趋向大尺寸化的背景下,高端OLED电视也在积极冲大。市调机构Omdia统计,2022年,超大尺寸OLED电视(70寸以上)的
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网