>我在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中做到这一点?
在以下情况下,您无需将字典转换为特定于 Crate 的对象语法您可以使用参数支持。(无论如何你真的应该使用)
如果您只需要更新字典的单个值,您可以这样做像这样:
cur.execute("update servers set tags['value'] = ?", ('three',))
对于字典列表,您需要更新整个值,如下所示:
cur.execute("update servers set tags = ?", (updated_list,))
我建议使用诸如SQLAlchemy之类的ORM连接到crate数据库,该数据库似乎是开箱即用的。然后,您可以使用 python 对象来更新数据库值。这样可以省去手动将类型转换为适当架构的麻烦。