使用准备好的语句时,cassandra中的python驱动程序出现问题

dgenwo3n  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(334)

当我想用如下python代码更新cassandra表中的set项时

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)

问题是{'?'}不能由prepared识别。我测试{'?'},但没有任何变化。

pobjuy32

pobjuy321#

更新:忘记了那个语法。。。
您需要使用以下语法:

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

并以set作为第一个参数进行绑定:

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

原始答案:
你不需要到处引用 ? 字符-当绑定发生时,它正确地引用文本和其他类型。
p、 请注意,如果您使用 {?} ,这意味着您总是在集合中插入一个元素。如果你需要更多,那么你只需要 ? ,并将python集作为参数传递。

相关问题