创建python脚本

Navigation:  功能明细 > 数据转储 > 数据转储(到关系数据库) > 脚本配置转储 >

创建python脚本

Previous pageReturn to chapter overviewNext page

 

本节介绍怎样创建python脚本,详细内容请参照iHyperDB安装目录下/config/ExportScripts文件夹中的示例脚本。

setEnviron(functionContainer)

传递主程序的回调函数供使用,之后通过functionContainer.function()来调用相应的函数,我们已经提供默认实现,将funcntionContainer赋值给全局变量functions,之后的函数调用可以通过functions来使用。

Init()

    初始化函数,可在其中进行注册规则、添加tag点、创建关系数据库表等初始化工作。

fini()

    清理函数,我们已经提供了默认实现。

getExportedMaxTime()

返回已转储数据的最大时间戳至转储服务,需要返回指定模式的时间戳,形如:convertedTime = [2012,8,8,20,8,8,0],列表中数据依次为年,月,日,时,分,秒,毫秒。若无法给出正确的上一次转储最后一条数据的时间戳,本函数返回的时间戳需要早于该时间。

images_hs-tip

可以格式化要存入关系数据库的时间字段,用逆序查询即可,也可以再表的创建语句中加入自增ID字段,根据该ID查询。

 

脚本需要提供的可选函数

三选一,根据脚本类型("interpolate","specify_interfolate","alarm_raw"),选择不同的实现.

脚本类型为:"interpolate","specify_interfolate":

    onInterpolateTimer(timestamp,DataArray)

转储插值定时器处理函数,参数DataArray是一个结构体数组(list of dictionary),每个结构体包含内容依次为:tag名、数据质量和数据值。函数体内组织sql语句,将这些数据写入关系数据库中。

脚本类型为:"alarm_raw":

onAlarmRawTimer(DataArray)

转储报警记录,参数DataArray是一个结构体数组(list of dictionary),每个结构体中包含报警记录相关的16个属性。函数体内组织sql语句,将这些数据写入关系数据库中。

脚本可调用的回调函数

脚本可调用的回调函数,通过setEnviron传递过来的functionContainer来调用。

注册规则

  retValue=functions.regRule(iHDSrvInfo,rdbInfo,ruleInfo)

  函数参数:

     iHDSrvInfo:实时数据库服务器信息;

     rdbInfo:关系数据库服务器信息;

     ruleInfo:规则时间类型信息。

  函数返回值:

     dictionary,元素为"errorcode",得到错误码。

  使用方式:

     init中调用

添加Tag点信息到规则中

  retValue=functions.addTag2rule(tag)

  函数参数:

     tag:tag点信息

  函数返回值:

     dictionary,元素为"errorcode",得到错误码。

  使用方式:

     init中调用

执行SQL语句

  retValue=functions.execSql(rdbInfo,sql)

  函数参数:

     rdbInfo:规则时间类型信息;

     sql:要执行的sql语句

  函数返回值:

     dictionary,元素为"errorcode",得到错误码;

number,得到查询结果行数,如果查询结果行数大于0,则获取元素“result”,得到sql查询的结果列表,保持查询返回的记录顺序,结果列表中的每个元素为记录字典,key为查询的字段名。

  使用方式:

     创建关系数据库表;插入记录;查询记录;

注销规则

  functions.unRegRule()

  函数参数:无

  返回值:无

  使用方式:

     fini()中调用

保持和关系数据库的连接

   retValue=functions.keepRDBConnection(rdbInfo)

  函数参数:

     rdbInfo:关系数据库服务器信息;

  函数返回值:

     dictionary,元素为"errorcode",得到关系数据库连接错误码,0表示已成功连接;

  使用方式:

     调用execsql前调用,若无法连接至关系数据库,返回该错误至转储服务。

©2015. All Rights Reserved.