将之前的python代码部署在plpython3u上面,直接上代码吧,因为没有管理员权限,所以我就直接用表做操作了
create or replace function get_json_by_python(origin_file text,layers int)
returns void
language plpython3u
as $$
import re
import json as js
plpy.execute("truncate public.json_result;")
def get_json_nums_of_layers(file_path):
fo=open(file_path,'r',encoding='utf-8')
jsonstr = fo.read()#将json作为整个的字符串读取进去
pos1=list()#用于存放
for m in re.finditer('{', jsonstr):
pos1.append(m.start())
pos2=jsonstr.find('}')
for i in range(len(pos1)):
if pos1[i]>pos2:
return i
else:
return len(pos1)
fo.close()
def get_json(file_path,nums_layer_toget):
s=''#s是用于放字段名的
v=''#v用于放记录的
if(nums_layer_toget>get_json_nums_of_layers(file_path)):
plpy.execute("raise notice '所要解析的层数超过该json拥有的层数