簡體   English   中英

使用准備好的語句時 Cassandra 中的 python 驅動程序出現問題

[英]Problem with python driver in Cassandra when use prepared statements

當我想使用 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)

問題是 {'?'} 無法通過准備識別。 我測試 {\'?\'} 但沒有任何改變。

更新:忘記了那個語法......

您需要使用以下語法:

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

並將 set 綁定為第一個參數:

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

原答案:

你不需要加引號? 字符 - 當綁定發生時,它會正確引用文本和其他類型。

PS 請注意,如果您使用{?} ,這意味着您始終將一個元素插入集合中。 如果你需要更多,那么你需要使用 just ? ,並將 python 集作為參數傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM