2

当我想使用以下 python 代码更新 Cassandra 表中的设置项时

ps = session.prepare( """ UPDATE test,tbl SET val = val + {'?'} where name = ? and id = ?;""" )
bs = bind(ps, ['name', 'name', 1])
session.execute(bs)

我有错误

Too many arguments provided to bind() (got 3, expected 2)

问题是 {'?'} 无法通过准备识别。我测试 {\'?\'} 但没有任何改变。

4

1 回答 1

1

更新:忘记了那个语法......

您需要使用以下语法:

UPDATE test,tbl SET val = val + ? where name = ? and id = ?;

并将 set 绑定为第一个参数:

bs = bind(ps, [set(['name']), 'name', 1])

原答案:

您不需要在?字符周围加上引号 - 当绑定发生时,它会正确引用文本和其他类型。

PS 请注意,如果你使用{?},这意味着你总是在集合中插入一个元素。如果您需要更多,那么您需要使用 just ?,并将 python 集作为参数传递。

于 2020-06-09T13:03:37.027 回答