У меня есть таблица a_table
с этим первичным ключом:
PRIMARY KEY (comp_code, name)
.
К которому я вставляю данные из словаря с именем officer_item_copy
:
{
'address': 'string',
'name' : 'a non unique name'
'appointed_on': '23/2/1988',
'comp_code': 'OC319508',
'former_names': [
{'forenames': 'string',
'surname': 'string'},
{'forenames': 'string', 'surname': 'string'}
],
}
В столбце former_names
Я хочу сохранить информацию о предыдущих именах, которая является списком словарей в Python, поэтому я создал следующее ограничение JSON []
, куда я хочу вставить определенный массив json.
Я понимаю, как построить оператор вставки, благодаря этому посту - но это вставляет новую строку, тогда как я хочу вставить массив json в существующий с определенным первичным ключом (имя, код ).
Я использую этот пост в качестве ссылки для моего кода ниже.
Вот мой код:
# cast dictionaries to json objects
json_array = [json.dumps(i) for i in list_of_dicts_former_names]
insert_data = (json_array, )
# update table "a_table"
cur.execute("""UPDATE company_officers_list
SET
former_names = (%s::json[]),
WHERE
comp_code = {1}
AND
name ={2}""".format(officer_item_copy["comp_code"],
officer_item_copy["name"]),
insert_data)
и моя ошибка:
---------------------------------------------------------------------------
ProgrammingError Traceback (most recent call last)
<ipython-input-472-af4c715da33d> in <module>
7 name = {}
8 """.format(officer_item_copy["comp_code"], officer_item_copy["name"]),
----> 9 insert_data)
ProgrammingError: syntax error at or near "Name"
LINE 7: name = Unique Name 2