CQL 更新查询无法使用 Python

CQL update query not working using Python

我正在尝试在重置为 cassandra db 后更新新密码。这是我编写的查询,其中用户名和密码字段都是动态的。这样对吗?

    def update_db(uname, pwd):
        query = session.prepare('update user.userdetails set "password"=%s where "username" = ? ALLOW FILTERING', pwd)
        session.execute(query, (uname,))

update_db(username, new_pwd)

我通过 API 调用它。但是好像没有更新。

要更新记录,您需要提供完整的主键。它不适用于 ALLOW FILTERING - 您需要首先获取要更新的所有主键,然后发出单独的更新命令。有关 UPDATE 命令的更多详细说明,请参阅 documentation

如果您真的想为某些列指定默认值 - 为什么不简单地用 .get('column', 'default-value') 之类的东西来处理它?

Alex 完全正确,您需要为任何写入操作提供完整的 PRIMARY KEY。删除 ALLOW FILTERING,只要您的主键定义为:PRIMARY KEY (username).

,您的查询就应该有效

此外,最佳做法是参数化您的 整个 准备语句,而不是依赖 password.

的字符串格式
    query = session.prepare('update user.userdetails set "password"=? where "username"=?')
    session.execute(query,[pwd,uname])

注意:如果您在任何时候发现自己需要 ALLOW FILTERING 指令,那么您做错了。