【问题标题】:CQL update query not working using PythonCQL 更新查询无法使用 Python
【发布时间】:2019-10-14 22:40:19
【问题描述】:

我正在尝试在重置为 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 调用它。但是好像没有更新。

【问题讨论】:

    标签: python flask cassandra cql


    【解决方案1】:

    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 指令,那么您做错了。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-30
        • 2014-11-15
        • 2015-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多