发表日期: 2022-11-30 12:27:31 浏览次数:73
德宏网络推广公司-德宏百度营销推广

厦门大学金融研究所张亦春所长表示,区块链技术的去中心化, 分布式点对点交易,速度快,效率高点对点交易去掉中介环节,能够降低交易成本;公开、透明、数据不可纂改、安全可靠。
张亦春表示,金融是现代经济的核心,应该尽快让区块链金融落地生根,厦大是否能成立一个中国金融科技研究院或研究中心,由经济学院金融国家重点学科联合信息与技术学院计算机系和人工智能系,或生物学院中的神经网络学科,专注对区块链金融和智能金融的研究与开发。
访问数据库的函数可能会碰到错误,这将导致函数中止并且产生异常。plpy.execute和plpy.prepare都能产生plpy.SPIError的一个子类的实例,这默认将终止该函数。通过使用try/except结构,这种错误可以像其他 Python 异常一样被处理。例如:
CREATE FUNCTION try_adding_joe() RETURNS text AS $$
try:
plpy.execute("INSERT INTO users(username) VALUES ('joe')")
except plpy.SPIError:
return "something went wrong"
else:
return "Joe added"
$$ LANGUAGE plpythonu;产生的异常的实际类对应于特定的导致该错误的情况。可能的情况列表请参考表 A.1。模块plpy.spiexceptions为每一种PostgreSQL情况定义了一个异常类,并且根据情况的名称命名。例如:division_by_zero变成DivisionByZero,unique_violation变成UniqueViolation,fdw_error变成FdwError,等等等等。这些异常类的每一种都是从SPIError继承而来。这种分离让处理特定错误更加容易,例如:
CREATE FUNCTION insert_fraction(numerator int, denominator int) RETURNS text AS $$
from plpy import spiexceptions
try:
plan = plpy.prepare("INSERT INTO fractions (frac) VALUES ($1 / $2)", ["int", "int"])
plpy.execute(plan, [numerator, denominator])
except spiexceptions.DivisionByZero:
return "denominator cannot equal zero"
except spiexceptions.UniqueViolation:
return "already have that fraction"
except plpy.SPIError, e:
return "other error, SQLSTATE %s" % e.sqlstate
else:
return "fraction inserted"
$$ LANGUAGE plpythonu;注意因为所有来自于plpy.spiexceptions模块的异常都继承自SPIError,一个处理它的except子句将捕捉任何数据库访问错误。
作为另一种处理不同错误情况的方法,可以捕捉SPIError异常并且在except块中通过查看异常对象的sqlstate属性来判断错误情况。这种属性是包含着“SQLSTATE”错误代码的一个字符串值。这种方法提供了近乎相同的功能