Вставка объектов/словаря в массив объектов (Crate, python)

У меня есть массив объектов в таблице crate, и когда я делаю команду SELECT и fetchall(), она дает мне следующий список словарей:

[{"key": "two", "id": "1", "value": "three", "tag": False}, etc..]

После этого я хочу изменить значение из одного из этих словарей и обновить массив с помощью sql UPDATE. В жестком коде это должно выглядеть так:

cur.execute('UPDATE servers SET 
tags =[{key= "two", id= "1", value= "three", tag= False}, etc..]')

Это означает, что я должен разобрать этот словарь:

{"key": "two", "id": "1", "value": "three", "tag": False}

В такую ​​строку:

{key = "two", id = "1", value = "three", tag = False}

Нет " для ключей = вместо : . Как я могу сделать это в python?


person Vasile    schedule 18.01.2017    source источник


Ответы (2)


Вам не нужно преобразовывать словарь в синтаксис объекта Crate, если вы используете поддержку параметров. (Что вы действительно должны использовать в любом случае)

Если вам нужно обновить только одно значение словаря, вы можете сделать что-то вроде этого:

cur.execute("update servers set tags['value'] = ?", ('three',))

В вашем случае со списком словарей вам нужно обновить все значение, например:

cur.execute("update servers set tags = ?", (updated_list,))
person mfussenegger    schedule 18.01.2017

Я бы предложил использовать ORM, например SQLAlchemy, для подключения к базе данных ящиков, которая, кажется, поддерживается из коробки. Затем вы можете использовать объекты python для обновления значений базы данных. Это избавит вас от необходимости вручную преобразовывать типы в соответствующую схему.

person bear    schedule 18.01.2017