您的位置:首页 > 其它

Tribon Vitesse开发教程(五)

2017-01-24 20:11 225 查看
之前用了大量篇幅来介绍数据抽取,我也看过一些文章讨论Tribon数据抽取,但多是集中在数据抽取的过程和方法上,考虑软件工程方面,例如易用性和重用的很少。所以我也侧重于项目的实际应用,主要介绍如何将数据抽取变得更可用。在提高效率的书中都会赞同这样的观点:先花一些时间把准备工作做好,后期的速度就会提升。而从更长远看,后面做得越多,收益就越大。正所谓:“工欲善其事必先利其器”。在我们的项目中,数据抽取类得到了很好的重用,我甚至把加密程序写到数据抽取类里面,因为几乎所有的程序都会调用它。同样是生成报表的程序,我也比较过以前VB直接进行数据抽取和现在使用Python类进行数据抽取的程序,在代码量,开发周期等方面,Python都有明显的优势。

数据处理

当我们获得数据之后,就要对其进行处理。例如材料表,会对相同的材料进行汇总,这时候就会想到用数据库。在我看到过的Tribon二次开发程序中,被使用的数据库包括:SQL
Server, MySQL,
Access。而我使用的是PySQLite,只因为一个理由:它支持内存数据库。内存数据库可以在内存中完成Create, Insert,
Select操作,不需要数据库服务器,甚至不需要数据库文件。当然,它的缺点就是不能持久化数据,如企业有这样的需求,紧固件不在Tribon中建模,故而数据抽取得不到数据,此时利用中间数据库,向中间数据库添加紧固件信息,最终通过中间数据库生成报表。但是这个问题是值得探讨的,问题就在于如果Tribon模型进行过修改,中间数据库与Tribon数据库直接的同步就会有问题,如果同步自Tribon数据库,紧固件信息则会丢失。所以我倾向于所有改变都在Tribon数据库进行,而中间数据库仅提供数据的汇总操作。

关于中间数据库的选择,我想SQL
Server和MySQL都需要建立数据库服务器,在比较大的数据量和多人协作的环境下适用,而且如果计划为数据提供更复杂处理,使用数据库服务器的扩展能力更强。它们的区别就在于一个收费,一个免费,也许是产品化应该考量的吧。Access我最近用过,实在是太方便了。如果是初学者,又被数据库搞得云里雾里,用这个可以省去不少麻烦。

PySQLite数据再被SqliteDB.py模块封装后,使用起来还是很方便的。还是看自省的使用例子:

sq = SqliteDB() 

vssql = """create table PipeSupportMaterial
(project text, module text, pipesystem text, compname text, unit text, number integer)""" 

sq.Execute(vssql) 

values = [['fpso', '1002', 'ww', 'ubolt-8', 'pcs', 1], ['fpso', '1002', 'ww', 'L30X30', 'mm', 1456]] 

vssql = """insert into PipeSupportMaterial (project, module, pipesystem, compname, unit, number)
values (?, ?, ?, ?, ?, ?)""" 

sq.Executemany(vssql, values)

vssql = "select * from PipeSupportMaterial" 

print sq.GetData(vssql)


理解上面的代码需要SQL的基本知识,就是创建了名为PipeSupportMaterial的表,然后插入数据,列出所有数据并打印出来。我们要做的是为插入数据格式化数据抽取的数据到一个列表里面,这里面是values变量。

至此通过PySQLite,报表程序的数据流如下图所示:





只差报表这一段。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: