SqlEngine.registerFunction
为该 SqlEngine 注册一个可访问的函数。
SqlEngine.registerFunction(return_type, function_name, function, n_arguments)请注意:此方法是可重入的。在当前的 Python API 中,游标会隐式创建一个 SqlEngine,因此通常情况下您不需要直接调用此方法。此外,请留意以下几点:
- 返回类型应为以下 Python 内置类型之一:布尔型、整型、长整型、浮点型、字符串型或 Unicode 字符串型。
- 参数类型未指定,应用程序需要负责检查参数类型。
- 支持多态函数。
- n_arguments 参数可以设置为 -1,表示函数可以接受不同数量的参数。
- 如果 n_arguments 参数为 2,而函数仅用一个参数调用,则该函数将被视为聚合函数(例如,请参阅 SDK 示例“samples/python/sql/sqlbasic”中的 EMA 函数)。
参数
return_type
返回类型;以下 Python 内置类型之一:bool(布尔型)、int(整型)、long(长整型)、float(浮点型)、string(字符串型)、unicode(Unicode 字符串型)
function_name
函数名。
function
由应用程序定义并通过调用 exdb.register_function() 向运行时注册的 Python 函数。
n_arguments
此函数的参数数量;如果指定为 -1,则表示该函数接受可变数量的参数。
返回
Exception
抛出带有适当错误消息的异常。
示例
def ema(agg,val):
a = 2.0 / (14 + 1)
return a*val + (1-a)*agg
...
dict = exdb.load_dictionary(schema, persistent=is_disk, debug=is_debug)
db = exdb.open_database(dbname='opendb', dictionary=dict, is_disk=is_disk, db_segment_size=128*1024*1024);
exdb.register_function(float, "ema", ema, 2)
...
conn = db.connect()
conn.engine.registerFunction(float, "ema", ema, 2)