Re: Appending new data to existing field of Json data type

Поиск
Список
Период
Сортировка
От VENKTESH GUTTEDAR
Тема Re: Appending new data to existing field of Json data type
Дата
Msg-id CA+iwz4kJW+yHUWkkc5h0UyH32+PzU79dJvawxXv0TGzOcYGBvQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Appending new data to existing field of Json data type  (Michael Paquier <michael.paquier@gmail.com>)
Ответы Re: Appending new data to existing field of Json data type  (Adrian Klaver <adrian.klaver@aklaver.com>)
Список pgsql-general
Ya agreed thats not legal JSON, that was typing mistake sorry for that,

let me make you clear what i need exactly,

I have table named (exampleTable) with json field as (example_list), and when i say
SELECT * FROM exampleTable;

id | example_list                                                           
---+----------------------------------------------
 2 | {"abc":[ { "a":"b","c":"d" } ] }


And this data i am inserting through DJango view by writing the following statement

test = ExampleTable(id = 2, example_list = {"abc" : [ { "a":"b","c":"d" } ] })
test.save()

now i want to append { "e":"f", "g":"h" } to example_list by specifying the id.
and after appending the data should be stored in the following way :
After appending,
for example if i say :
SELECT * FROM exampleTable;
i should get this.

id | example_list                                                           
---+--------------------------------------------------------
 2 | {"abc":[ { "a":"b","c":"d" }, { "e":"f", "g":"h" } ] }

Hope your clear now.

So now Guide me to append it through Python Djnago View. or through raw sql query.


On Wed, Oct 29, 2014 at 12:45 PM, Michael Paquier <michael.paquier@gmail.com> wrote:
On Wed, Oct 29, 2014 at 3:42 PM, VENKTESH GUTTEDAR
<venkteshguttedar@gmail.com> wrote:
>     As i am new to postgresql, i am learning through experimenting things.
>
>     i have a table with json data type field, so there is some data for
> example :
>
>         { [ { a:b, b:c } ] }
>
>     and now if i append data then it should be like :
>
>         { [ { a:b, b:c }, { e:f, g:h } ] }
That's not legal JSON, no? A key needs to be appended for the array
defined, like that:
=# select '{"f1":[{ "a":"b", "b":"c" }]}'::json;
             json
-------------------------------
 {"f1":[{ "a":"b", "b":"c" }]}
(1 row)

>     Is there any way to achieve this. please help.!
>     I have Postgresql 9.3.5.
Er, you can use the concatenate operator || to achieve that:
=# select '{"a":"b","b":"c"}'||','||'{"e":"f","f":"g"}'::json;
              ?column?
-------------------------------------
 {"a":"b","b":"c"},{"e":"f","f":"g"}
(1 row)

You may prefer actually something that really merges everything, among
many methods here is one (not the fastest one, now on the top of my
mind):
=# with union_json as (
select * from json_each('{"a":"b","b":"c"}'::json)
  union all
select * from json_each('{"d":"e","e":"f"}'::json))
select '{'||string_agg(to_json(key)||':'||value, ',')||'}'
  from union_json;
             ?column?
-----------------------------------
 {"a":"b","b":"c","d":"e","e":"f"}
(1 row)

Regards,
--
Michael



--
Regards :
Venktesh Guttedar.

В списке pgsql-general по дате отправления:

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: Appending new data to existing field of Json data type
Следующее
От: Brilliantov Kirill Vladimirovich
Дата:
Сообщение: undefined struct 'pg_conn' on Windows7