当前位置: 首页 > 知识库问答 >
问题:

卡桑德拉·蟒蛇准备查询和MAP类型

伯向晨
2023-03-14

我正试图用Python插入到这个Cassandra表中

CREATE TABLE IF NOT EXISTS hourly (
    cid TEXT,
    uid BIGINT,
    day DATE,
    classes MAP<INT, BOOLEAN>,
    PRIMARY KEY (cid, uid, day) )

有了这份准备好的声明:

ins_hourly = cass.prepare(
    "INSERT INTO hourly (cid, uid, day, classes)"
    " VALUES (?, ?, ?, ?)" )

使用这段代码(数据库已打开并插入到其他表,因此连接有效):

cid = 'foo'
uid = 11380
dt = '2019-10-14'
hr = 11
classes = {hr: True}
row = Cassandra.execute(ins_hourly, cid, uid, dt, classes)

我捕获了异常:“为 bind() 提供的参数太多(得到 12 个,预期为 4)”。

绑定函数是如何将我的4个参数转换为12个的?

希望有什么办法来解决这个问题?

或者,一些使用卡桑德拉MAP,LIST和SET的工作示例,从Python驱动程序将不胜感激。

共有1个答案

高博涉
2023-03-14
row = Cassandra.execute(ins_hourly, (cid, uid, dt, classes))

执行中缺少括号。

Python Cassandra编写的语句测试

Eaxmple用于地图数据类型

或者,您也可以使用bind来绑定变量并执行绑定查询。

 类似资料:
  • 我正在使用Cassandra作为我的一个应用程序。我想使用Cassandra通过cql提供的Prepared语句。如果我准备了一个查询,这是否在所有节点中都准备好了?。 任何帮助是值得赞赏的。

  • 在你否决之前,我想声明,我看了所有类似的问题,但我仍然得到可怕的“主键列不能被限制”错误。 下面是我的表结构: 谢谢,德尼兹

  • 我们对DataStax Cassandra的查询使用缓存的准备声明。但是,如果我们需要向表中添加新列,我们需要重新启动应用程序服务器以重新缓存准备好的语句。 我在卡珊德拉遇到了这个错误,这解释了https://datastax-oss.atlassian.net/browse/JAVA-420的解决方案 它基本上提供了一种解决方法,在查询中不使用“SELECT*FROM table”,而是使用“s

  • 我们一直在使用Spark RDD API(Spark 2.0)来处理在Cassandra.Note中建模的数据,这些数据在Cassandra中建模以实现高效的读写。 然而,现在还有SparkSQLAPI,Spark DataFrame API,它也是一种替代的数据访问方法-http://spark.apache.org/docs/latest/sql-programming-guide.html

  • 全能的开发者们。我在Spark中运行一些基本的分析,在这里我查询多节点Cassandra。我正在运行的代码以及我正在处理的一些非链接代码是: Spark的版本是1.6.0,Cassandra v3。0.10,连接器也是1.6.0。键空间有,表有5列,实际上只有一行。如您所见,有两个节点(OracleVM中制作的虚拟Macine)。 我的问题是,当我测量从spark到cassandra的查询时间时,

  • 我已经开始使用DataTax PHP驱动程序学习PHP中的Cassandra,我必须使用准备好的语句在CQL中设置映射的值,查询是: 提交的“属性”是MAP类型,因此我尝试将其作为字符串传递: 在PHP中: 但是我得到了错误“java.lang.IllegalArgumentException”,对于准备好的语句中的映射或列表之类的集合,哪种语法是正确的?