2017-12-19 2 views
-1

zu String konvertiert Ich habe folgende Python gespeichert Funktion:json Argumente an eine Funktion plpythonu (Postgres Python-Erweiterung) wird

CREATE or replace FUNCTION test_py_json(
    segments json 
) RETURNS text 
AS ' 

return type(segments) 
' 
LANGUAGE plpythonu; 
` 

Wenn ich es mit einem JSON arguemnt aufrufen:

SELECT test_py_json('[[84160, 84285]]'::json); 

Es Rückgabe:

<type 'str'> 

Das json Argument in einen String umgewandelt wird ...

Gibt es eine Möglichkeit, diese Konvertierung zu vermeiden?

+0

Noch nicht, Hacker auf sie gerade arbeiten, sehen http://www.postgresql-archive.org/Jsonb-transform-for-pl-python-td5989185.html – klin

Antwort

0

Verwenden ast Helpers:

create or replace function test_py_json(segments json) 
returns text 
as $$ 
    import ast 
    js = ast.literal_eval(segments); 
    return type(js) 
$$ 
language plpython3u; 

select test_py_json('[[84160, 84285]]'::json), test_py_json('{"key": "value"}'::json); 

    test_py_json | test_py_json 
----------------+---------------- 
<class 'list'> | <class 'dict'> 
(1 row) 
Verwandte Themen