0

我在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 中做到这一点?

4

2 回答 2

1

如果使用参数支持,则不需要将字典转换为 Crate 特定的对象语法。(无论如何你真的应该使用它)

如果您只需要更新字典的单个值,您可以执行以下操作:

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

在您使用字典列表的情况下,您需要更新整个值,如下所示:

cur.execute("update servers set tags = ?", (updated_list,))
于 2017-01-18T18:57:39.187 回答
0

我建议使用诸如 SQLAlchemy 之类的 ORM 连接到 crate 数据库,这似乎是开箱即用的。然后,您可以使用 python 对象来更新数据库值。这样可以省去手动将类型转换为适当模式的麻烦。

于 2017-01-18T18:17:40.590 回答